►從檔案中讀取資料框或矩陣
可以用read.table()來讀取資料框。
> z <- read.table( "d:/rcodes/zfile.txt", header=true )
> z
name age
1john 25
2mary 28
3jim 19
注:此處scan()不能正確讀取資料框,因為這個檔案中數值和字元混雜,還含有表頭。
似乎沒有辦法直接從檔案中讀取資料框,不過借助其他工具可以輕鬆辦到。乙個簡單快速的辦法是用scan()逐行讀取,用matrix()中的byrow選項設定矩陣式按行儲存,而不是按列儲存。
> x <- matrix( scan("d:/rcodes/zfile.txt", quiet=true),nrow=5, byrow=true )
> x
[,1] [,2] [,3] [,4]
[1,] 1 0 1 0
[2,] 0 1 0 1
[3,] 1 1 0 1
[4,] 1 0 0 1
[5,] 0 0 1 0
上面的做法對於一次性的快速操作很有效,不過,還有一種方法,可以用read.table()先讀取為資料框,再用as.matrix()將其轉化為矩陣。這是乙個通用的方法:
> read.matrix <- function( filename )
> read.matrix( "d:/rcodes/zfile.txt" )
v1 v2 v3 v4
[1,] 1 0 1 0
[2,] 0 1 0 1
[3,] 1 1 0 1
[4,] 1 0 0 1
[5,] 0 0 1 0
►讀取文字檔案
在計算機文獻中,文字檔案(text file)和二進位制檔案(binary file)之間通常會有區別。但這種區別在某種程度上有些誤導性,其實每個計算機檔案都是由0和1編碼組成,在這個意義上說,所有檔案都可以認為是二進位制檔案。此處把文字檔案定義為主要由ascii字元或其他人類語言的編碼(如為中文的gb編碼)構成的檔案,換行符的使用讓人感覺檔案是按行組成的。
非文字檔案,如jpeg影象或可執行程式檔案,通常稱為「二進位制檔案」。
可以使用readlines()讀取文字檔案,無論是每次一行還是一次性全部讀取。
一次性全部讀取樣例:
> z <- readlines( "d:/rcodes/zfile.txt" )
> z
[1] "john 25 mn" "mary 18 nb" "jim 36 jf"
►連線的介紹
「連線(connection)」是r中用於多種i/o(輸入輸出)操作的乙個基本機制。它可以用於讀取檔案,連線一般通過呼叫file()、url()或其他r函式建立。可以通過「?connection」命令檢視這些函式的列表。
我們可以逐行讀取檔案,樣例如下:
> rs <- file( "d:/rcodes/zfile.txt", "r" )
> readlines( rs, n=1 )
[1] "john 25 mn"
> readlines( rs, n=1 )
[1] "mary 18 nb"
> readlines( rs, n=1 )
[1] "jim 36 jf"
> readlines( rs, n=1 )
character(0)
開啟連線,把結果賦給變數rs,然後設定引數n=1使程式一次只能讀取檔案的一行。當r遇到檔案結束符(eof),就返回乙個控制。我們需要設定乙個連線,讓r跟蹤檔案的程序。
> rs <- file( "d:/rcodes/zfile.txt", "r" )
> while( true )
+ else
+ }[1] "john 25 mn"
[1] "mary 18 nb"
[1] "jim 36 jf"
[1] "reached the end"
如果想要「倒帶」,從檔案開始出重新讀取,可以使用seek()函式:
> rs <- file( "d:/rcodes/zfile.txt", "r" )
> readlines( rs, n=2 )
[1] "john 25 mn" "mary 18 nb"
> seek( con=rs, where=0 )
[1] 24
> readlines( rs, n=1 )
[1] "john 25 mn"
seek()中引數where=0表示把起始指標指向檔案的最開頭,即直接從開始讀起。這個命令的返回值是24,說明在執行命令前指標位於24處。
可以用close()函式來關閉連線。關閉連線可以讓系統知道已經完整讀取了所需檔案內容,現在可以正式斜土磁碟。
檔案輸入與輸出
1.檔案的讀取 即是讀取檔案的資料的行為,讀取原始檔案位元組流,除了文字必須指定編碼集 文字是拿給使用者看的有意義內容 其他資料一般不指定編碼集,因為不是拿來看的,位元組資料長什麼我們並不關注 要想對文字檔案進行讀取,就需要乙個用 file 物件構造乙個 scanner 物件,如下所示 scanne...
R 輸入和輸出
啟動r後將預設開始乙個互動式的會話,從鍵盤接受輸入並從螢幕進行輸出。也可以處理寫在乙個指令碼檔案 乙個包含了r語句的檔案 中的命令集並直接將結果輸出到多類目標中。輸入 函式source filename 可在當前會話中執行乙個指令碼。如果檔名不包含路徑,r將假設此指令碼在當前工作目錄中。例,sour...
C 學習筆記(六)輸入輸出與檔案讀寫
一 輸入輸出相關的類 對以上資料流相關類的解讀 istream用於輸入的流類,cin是這類的物件 ostream用於輸出的流類,cout是這類的物件 ifstream 用於檔案讀取資料的流類 ofstream用於檔案寫入資料的流類 iostream是既能用於輸入,用於輸出的類 fstream是既能從...