-1

我希望更改用户输入的每个文件中一个特定列或所有列的名称。到目前为止,我已经尝试过:

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

有没有人对如何以这种方式更改多个文件的列名有任何建议?谢谢,斯蒂芬

4

1 回答 1

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.tablesread.csv直接的东西。

于 2012-08-13T16:10:35.383 回答