R 在数据帧列表中创建列名

R 在数据帧列表中创建列名,r,R,我想将数据帧列表中的所有列名(V1、V2、V3,…)更改为相同长度的向量中的名称。有几个非常相似的问题,但没有一个适合我的特定列表。感谢您的帮助。下面的数据框(first8)无法将V1、V2、V3…识别为列名 我的向量(colnames)包含249个名称。数据帧列表中还有249个变量 我尝试了以下几种方法,但都失败了,但它们在SO中也使用了类似的示例 > for(i in 1:length(first8)){ + colnames(first8[[i]]) <- colnames

我想将数据帧列表中的所有列名(V1、V2、V3,…)更改为相同长度的向量中的名称。有几个非常相似的问题,但没有一个适合我的特定列表。感谢您的帮助。下面的数据框(first8)无法将V1、V2、V3…识别为列名

我的向量(colnames)包含249个名称。数据帧列表中还有249个变量

我尝试了以下几种方法,但都失败了,但它们在SO中也使用了类似的示例

> for(i in 1:length(first8)){
+ colnames(first8[[i]]) <- colnames
+ }
Error in `colnames<-`(`*tmp*`, value = c("FILEID", "FILETYPE", "STUSAB",  : 
  'names' attribute [249] must be the same length as the vector [8]


> test <- lapply(first8, setNames, colnames)
Error in FUN(X[[i]], ...) : 
  'names' attribute [249] must be the same length as the vector [8]



>Map(function(df, vec) setNames(df, n), first8, colnames)
 Show Traceback

 Rerun with Debug
 Error in setNames(df, n) : 
  'names' attribute [249] must be the same length as the vector [8] 
>用于(1中的i:长度(前8)){
+colnames(first8[[i]])我们可以试试

lapply(first8, function(x) setNames(x, vec1))
或者没有匿名函数调用

lapply(first8, setNames, vec1)
数据
set.seed(24)

first8`colnames'接受字符向量列表。您不需要遍历它们

colnames(first8) <- colnames[1:8];

colnames(first8)请不要将屏幕截图作为您的代码共享。使用
dput
代替两者都不起作用…可能是因为我列表中的每个数据帧都有不同数量的变量。第一个数据帧有8个变量,另一个241个变量。colnames在我的列表和akrun的列表中显示为NULL。我将研究这段特定代码起作用而其他代码不起作用的确切原因在我的DFs列表中,但我将为可能从中获益的人分享。这是从另一篇SO帖子中获取的,带有类似问题。我仍然相信前面的一些答案不起作用,因为大多数示例使用的列表中包含DFs,每个测试中的变量数相同
colnames(first8) <- colnames[1:8];