2015-06-14 204 views
0

我通常会将一堆.csv文件读入数据框列表中并手动命名。来自数据帧的数据帧名称列表

#...code for creating the list named "datos" with files from library 
# Naming the columns of the data frames 
names(datos$v1r1)<-c("estado","tiempo","x1","x2","y1","y2") 
names(datos$v1r2)<-c(...) 
names(datos$v1r3)<-c(...) 

我想自动执行此重命名操作。为此,我在我的datos列表中为每个数据框创建了一个我想要的名称的数据框。

这是我如何生成该数据帧:

pru<-rbind(c("UT","TR","UT+","TR+"), 
      c("UT","TR","UT+","TR+"), 
      c("TR","UT","TR+","UT+"), 
      c("TR","UT","TR+","UT+")) 

vec<-paste("v1r",seq(1,20,1),sep="") 
tor<-paste("v1s",seq(1,20,1),sep="") 


nombres<-do.call("rbind", replicate(10, pru, simplify = FALSE)) 

nombres_df<-data.frame(corrida=c(vec,tor),nombres) 

由于nombres_df$corrida[1]v1r1,我必须以命名datos$v1r1("estado","tiempo", nombres_df[1,2:5])列,依此类推对于其它40个元素。 我想自动重命名。我在想我可以使用使用正则表达式的东西。

只是为了记录,我不知道为什么,但数据帧列表的顺序是不一样的1:20序列(由此我的意思是10之前2,3,4 ... ... )

下面是一个具有相似结构但数量较少和较短的列表的玩具示例。

toy<-list(a=replicate(6,1:5),b=replicate(6,10:14)) 

回答

1

你有一个数据帧中的变量corridas是要重命名的数据帧的名称,其余列所需的该数据帧的变量名。您可以使用循环执行所有重命名操作:

for (i in seq_len(nrow(nombres_df))) { 
    names(datos[[nombres_df$corridas[i]]]) <- c("estado","tiempo",nombres_df[i,2:length(nombres_df)]) 
}