A. R語言批量讀文件
殺殺
前兩天一個同學問了一個批量讀數據(文件)的問題
感覺現在分析測序數據的話,在R中一次性讀取多個文件的功能還是挺需要用到的
決慧腔定總結一下下
總不能寫n行read.csv…balabala…去讀取,那太麻煩了
於是決定使用批量讀數據
首先我們要獲取這個文件夾里所有的文件名字以便讀取
接下來我們需要構建讀文件的路徑
ps: 在做這種批量操作時還是有必要先花時間測試一個樣本是否能夠成功,然後再去做批量的循環,這樣也能方便自己找bug
因此我們先試著讀取一個文件
這里因為例子中的型衫文件格式比較特殊,所以使用的讀取函數是read.delim,如果是.csv或.txt等格式,也可以替換成read.csv, read.table等函數。
好了測試通過,接下來開始批量讀文件
需要注意的是,合並文件的時候,需要注意你是要取所有文件中行名的交集還是並集,或者最後你是否有一個統一的行名來規整所有文件。(當然如果你確定每個文件的行名都是相同的,就可以直接cbind),我遇到過需要取交集的情況,可以寫一個循環對每個文件的行名做交集,用最終的交集文件去match出所有你要的行然後合並。
但是這個例子中,有的文件的行名是1-4000,有的是5000-8000,存在非常大的差異,而需求是最後整合成一個行名為0-8000的矩陣,因此我先建立一個0-8000的列作為行名,把每個卜碧腔文件和這列進行一個match操作,然後未match到的填充為0。
其實沒有很難的部分,主要是需要讀取文件夾中的所有文件名,然後循環讀取就行了。
B. R語言 讀取大文件fread()
# R語言 讀取大文遲粗件fread()
library(data.table)
visitor_sensor<-fread('碼帆鎮data_visitor_sensor.csv'轎派,header = TRUE)
C. 如何用R讀取數據
在R語言裡面,有很多讀取數據的方法。R能讀文本文件,csv格式文件,通過RODBC包讀取資料庫數據等等。下面我介紹幾種最基本的讀取數據的方法!
工具/原料
RStudio
方法
不管是讀取數據還是寫入,R都是在工作路徑中完成的。所以首先我們要知道我們的R所在的工作路徑是在哪裡。使用getwd()函數來獲取我們的工作路徑。
下面查看工作路徑裡面有哪些文件,使用dir()函數
如果你所想導入的數據並不在你當前的工作路徑中,有兩種方法可以解決。第一種就是把數據文件放到工作路徑中,第二種方法就是更改工作路徑。更改工作路徑使用setwd()函數。比如你想要把工作路徑設置成桌面
現在我讀取我工作路徑中,名字為hw1_data.csv的文件。使用read.csv()函數
也可以使用read.table()函數來讀取csv格式的文件。由於csv文件的分隔符是「,」所以我們在用read.table()函數的時候,sep參數,我們要設定為sep=「,」
發現read.table()讀出來的數據,列名並不是我們文件中的列名,而是V1,V2。。。我們需要加上header這個參數來修改這個問題
另外在read.table()函數族中還有很多參數,對我們讀取數據都有幫助,大家可以去了解下。使用?read.table()進行了解
D. R語言系列之3-----文件讀寫
在R中,如果我們想要從外界讀入文件或寫出文件到特定路徑該沒行如何操作呢?
讀入文件,我們可以用read.table函數;而寫出文件,我們可以用write.table函數。悔察滑
每個參數都有自己的意義,其中比較常用的有header,sep等.
file是我們讀碧臘入的文件名稱;header,設置為T或F,是否把第一行定義為header;sep是設置文件內的分隔符。我們看個例子:
如果大家對具體的參數想要了解,可以輸入下面命令,就可以了解這個函數以及裡面各個參數的具體用法和含義:
其中比較常用的參數有file,quote,sep,row.names和col.names.
其中file是設置我們輸出的文件名,這個是自己定義的。
quote是一個邏輯值,T或者F。如果是T,那麼輸出的結果文件中的因子或者字元串會有引號;如果是F,輸出的結果文件中的因子或者字元串就沒有引號。
sep,和read.table中的sep類似,是分隔符,不過是用來設置輸出文件是以什麼分隔符來分割,比較常用的有空格,",",或者"\t"等。
row.nems和col.names是用來設置是否輸出行和列名。
希望這幾個例子可以使你了解了write.table的常用用法,如果想更詳細的了解,可輸以下命令查看:
希望有幫到你。