1.了解read.table
可以從帶分隔符的文本文件導入數據,可以讀入csv,txt等格式文件,並將其保存成數據框
read.table(file, header = FALSE, sep = "", quote = "\"'", dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),row.names, col.names, as.is = !stringsAsFactors,na.strings = "NA", colClasses = NA, nrows = -1,skip = 0, check.names = TRUE, fill = !blank.lines.skip,strip.white = FALSE, blank.lines.skip = TRUE,comment.char = "#",allowEscapes = FALSE, flush = FALSE,stringsAsFactors = default.stringsAsFactors(), fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
file:要讀取的文件名
header :默認值是FALSE,當header = T,會把文件第一行當作表頭,為FALSE的時候,第一行內容會被讀入到數據中
sep: 默認值為空。判斷文件是以什么分隔符來分隔行內數據,比如,csv是以逗號分隔,sep =",";以制表符分分隔的txt,sep = "\t"。當然你也可以根據自己文件情況選擇分隔符
stringsAsFactors:默認情況下字符型變量轉換成因子,stringsAsFactors = F,可以停止這種轉變
quote:用於指定包圍字符數據的符號,默認值為'或者"。
dec:指明數據文件中的小數點
numerals:字符串類型。用於指定文件中的數字轉換為雙精度數據時丟失精度的情況下如何進行轉換。這種情況發生於一個數字的位數超出double可以存儲的位數時。有3種選擇:
numerals = "allow.loss" :該值為默認值。允許丟失精度。numerals = "warn.loss":給出一個丟失精度的警告消息,並與numerals="allow.loss"一樣允許丟失精度。
numerals = "no.loss":當發生丟失精度時,將不會被轉換為數字,根據as.is參數的設置,而轉換為因子(factor)或則缺省情況下轉換為字符串。
更多參數意義可以在R中輸入?read.table查看。http://www.biye5u.com/article/r/2017/6348.html也可以點擊這個文章查看別人翻譯好的
2.read.table操作實例
讀取txt文件,並篩選出所有Benjamini< 0.05的行內容
txt文件格式:

#R代碼示例 讀取txt文件 read.table("Z0VSZ30.txt",header = F,sep = "\t")#注意這里的header=F,仔細觀察下圖第一行的名字 #運行后會有warning:In read.table("Z0VSZ30.txt", header = F, sep = "\t") : incomplete final line found by readTableHeader on 'Z0VSZ30.txt'是因為文件最后一行沒有換行,手動在文件里最后一行enter一下就可以了
讀取后的格式

2.1篩選出符合要求的數據
which函數
但是篩選出來得到的數據只有前三列,而我想得到的符合條件的整行

方法二:dplyr包里的filter函數
filter:
subset:For data frames, the subset argument works
on the rows. Note that subset will be evaluated in the data frame, so columns can be referred to (by name) as variables in the expression (see the examples).
data<-read.table('Z0VSZ30up.txt',header = T,sep = "\t")
#篩選數據:法1subset output1<-data.frame(subset(data,Benjamini< 0.05)) #法二:filter library('dplyr') output1<-data.frame(dplyr::filter(data,Benjamini< 0.05)) #輸出並選擇保存格式 write.table(output1,file = 'output1.txt',sep = '\t')#因為已經選定了工作環境,所以這里file不用寫路徑 test<-read.table('output1.txt',header = T,sep = '\t') data<-read.table('Z0VSZ30up.txt',header = T,sep = "\t")
3.數據保存
#保存為文本
write.table(output1,file = 'output1.txt',sep = '\t')
#保存為逗號分割文本
write.csv(output1,file = 'output1.csv')
#保存為R格式文件
save(output1,file = 'output1.RData')