我希望更改用户输入的每个文件中的一个特定列或所有列的名称。到目前为止,我已经尝试过这个:
File.names<-(tk_choose.files(default="", caption="Files", multi=TRUE, filters=NULL, index=1))
Num.Files<-NROW(File.names)
test<-sapply(1:Num.Files,function(x){readLines(File.names[x])})
data<-lapply(1:Num.Files, function(x){data<-read.table(header=TRUE, text=test)})
new.names<-names(data)
new.names[[14]]<-'column14'
names(data) <- new.names
但我明白了:
Error in names(data) <- new.names :
'names' attribute [14] must be the same length as the vector [1]
Execution halted
原始列名称如下:
Targ cov av_cov 87A_cvg 87Ag 87Agr 87Agr 87A_gra 87A%_1 87A%_3 87A%_5 87A%_10 87A%_20 87A%_30 87A%_40 87A%_50 87A%_75 87A%_100
有没有人对如何以这种方式更改多个文件的列名有任何建议? 谢谢, 斯蒂芬
答案 0 :(得分:1)
File.names<-(tk_choose.files(default="", caption="Choose your files", multi=TRUE, filters=NULL, index=1))
Num.Files<-NROW(File.names)
# read the files into a dummy variable
test<-sapply(1:Num.Files,function(x){readLines(File.names[x])})
# manipulate the first file
data<-read.table(header=T,text=test[1])
names(data)[14]<-'column14'
tk_choose.files
允许您选择文件。它将这些文件名存储在字符向量中。然后,您需要将数据读入R.我刚刚使用readLines
来存储来自相应文件的所有数据,以简化操作。您可以直接使用read.tables
或read.csv
等内容。