天才是百分之一的靈感加百分之九十九的汗水。 ——愛迪生
1. 文件讀取
read系列函數(shù):
# ex1 <- read.table("ex1.txt")
# read.table 默認 header = F
# ex1 <- read.table("ex1.txt",header = T)
# ex2 <- read.csv("ex2.csv")
# ex2 <- read.csv("ex2.csv",row.names = 1,check.names = F)
# 行名沒有正確讀進,參數(shù)row.names=1解決;
# 列名的減號被自動改為點號,為保證不修改,參數(shù)check.names=F解決。
規(guī)則:數(shù)據(jù)框不允許重復的行名
# rod = read.csv("rod.csv",row.names = 1)
# 因為加了row.names = 1而報錯
# rod = read.csv("rod.csv")
2. 數(shù)據(jù)框?qū)С?/h5>
csv格式和table格式:
# write.csv(ex2,file = "example.csv")
# ex2是要導出的數(shù)據(jù)框變量名,example是給導出的文件命名,二者可以不同。
# write.table(ex2,file = "example.txt")
當'read.table'讀進來的數(shù)據(jù)框有問題時,一方面是修改參數(shù),另一方面可以用'read.csv'或者'read.delim'替代。
read.delim一定程度上替代read.table,讀取data.frame中又有空格又有制表符,實際上制表符才是真正的分隔符。
# read.delim("data.frame",check.names = F)
# 當列名中出現(xiàn)點號時,也同樣是被修改了,需要check.names = F保留特殊字符。
查看列名是否有重復值:
# b = read.delim("GSE217012_Normalized_RPKM_LOG2_matrix.txt.gz",check.names = F)
# unique(b$Name)
# length(b$Name) 比較和unique的數(shù)量是否相同,length(unique(b$Name))
# table(table(b$Name))
3. 其他用于讀取/導出文件的R包
# data.table包里的
# fread()
# library(data.table)
# ex1 = fread("ex1.txt")
# ex1 = fread("ex1.txt",data.table = F) 默認加上data.table = F,不錄入data.table屬性,只保留data.frame的屬性。
# rio包支持的文件格式多,如spss的結(jié)果,csv,xls,txt,esv,不需要加參數(shù),能解決大多數(shù)的數(shù)據(jù)框,但是出現(xiàn)問題不太好解決。
# library(rio)
# ex1 = import("ex1.txt")
# import_list() **讀取含有多個工作簿的excel文件**
# export(ex1,file = "ex1,xlsx") 輸出
注意??:
- fread()函數(shù)不適合用于讀取表達矩陣,因為不能將第一列設(shè)置為行名,可以用tibble包的函數(shù)轉(zhuǎn)換:
# library(tibble)
# ex2 = column_to_rownames(ex2,"V1")
- 對于看不見的文件,可以逐行讀取,不需要文件解壓,直接看:
# tmp = readLines("ex1.txt")
指導老師:生新技能樹 小潔老師??