2012-08-13 78 views
-1

我希望更改用户输入的每个文件中某一列或所有列的名称。到目前为止,我已经试过这样:更改R中有多个输入的data.frame列名称

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 

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

回答

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的东西。