我有一系列顺序命名的数据帧,即“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
任何帮助都非常感谢!
答案 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
)。