访问按顺序命名的数据框的名称

时间:2014-10-20 11:40:34

标签: r

我有一系列顺序命名的数据帧,即“frame_1”“frame_2”frame_3“等等。我想使用循环或类似的东西使每个帧的第一行成为同名,到目前为止我试过了:

for( i in 1:length(holder)){
  colnames( noquote(paste("frame_",i,sep="")))<- (noquote(paste("frame_",i,sep="")))[1,]
}

但是这给了我错误

Error in unclass(x)[...] : incorrect number of dimensions

我无法理解,因为它应该传递colnames函数“frame_1”“frame_2”e.t.c

任何帮助都非常感谢!

1 个答案:

答案 0 :(得分:3)

我建议将所有数据框保留在列表中而不是多个对象中。这是一种方法:

# get the names of the data frames
frame_names <- ls(pattern = "^frame_\\d+$")

# put all data frames in a list
frames <- mget(frame_names)

# change the column names of all data frames in the list
frames <- lapply(frames, function(x) setNames(x, x[1, ]))

之后,您可以访问列表frames中的数据框。例如,frames[[1]]返回第一个数据框(frame_1)。