R 讀寫檔案 輸入與輸出

2021-06-26 14:30:51 字數 2514 閱讀 5836

►從檔案中讀取資料框或矩陣

可以用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是既能從...