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