在R語(yǔ)言中可以使用scan()函數(shù)從文件中獲取數(shù)據(jù)或從鍵盤中直接獲取用戶輸入的數(shù)據(jù),其語(yǔ)法格式可以參見《R語(yǔ)言中scan()函數(shù)參數(shù)詳解》。這里主要探討一下從文件中獲取數(shù)據(jù)的方法。
1、從文本文件中讀取數(shù)據(jù)
假設(shè)在R的當(dāng)前工作目錄中有一個(gè)文件:student.txt,其存儲(chǔ)的數(shù)據(jù)如下所示:
每個(gè)數(shù)據(jù)以空白分隔。
(1)scan("student.txt", what="c") #以字符串的格式讀取數(shù)據(jù)
(2)scan("student.txt", what="c", nlines=3) #讀取3行
(3)scan("student.txt", what="c", skip=1) #忽略第1行
以上的執(zhí)行情況如下圖所示:
(4)scan("student.txt", what=list(studentNo="",studentName="", studentSex="", studentAge=0),skip=1) #以列表的形式讀取數(shù)據(jù)
(5)lst <- scan("student.txt", what=list(xh="",xm="",xb="",nl=0),skip=1) #讀取數(shù)據(jù)并保存到變量中
執(zhí)行情況如下圖所示:
2、讀取CSV
CSV文件,默認(rèn)是以逗號(hào)進(jìn)行分隔的數(shù)值文件。將Excel文件另存CSV格式的文件后,可以使用R語(yǔ)言的scan()函數(shù)讀取其數(shù)據(jù)。
使用scan()函數(shù)讀取csv格式的文件,與讀取文本型數(shù)據(jù)沒(méi)有多大區(qū)別,不過(guò)要指定逗號(hào)作為分隔符。
將student.txt文件中的數(shù)據(jù)鍵入到Excel文件后,另存為student.csv,并將其放到R的工作目錄中。
(1)scan("student.csv") #scan()函數(shù)默認(rèn)以double格式存儲(chǔ)數(shù)據(jù),而該文件中包含不能轉(zhuǎn)換的數(shù)據(jù)而報(bào)錯(cuò)
(2)scan("student.csv",what="c") #由于未指定分隔符,scan()函數(shù)將每一行作為了一個(gè)數(shù)據(jù)域
(3)scan("student.csv",what="c",sep=",") #指定逗號(hào)作為分隔符后,可以正確讀取數(shù)據(jù)了
(4)scan("student.csv",what="c",sep=",",skip = 1) #忽略第一行的標(biāo)題行
以上在R中的執(zhí)行情況如下圖所示:
(5)scan("student.csv",what=list(xh="",xm="",xb="",nl=0),sep=",",skip=1) #以列表的形式讀取數(shù)據(jù)
(6)m<-matrix(scan("student.csv",what="c",sep=",",skip=1),ncol=4,byrow=TRUE) #讀取數(shù)據(jù)并創(chuàng)建矩陣
以上執(zhí)行情況如下圖所示:
本部分(完)
新聞熱點(diǎn)
疑難解答