我在列表对象中保存了多个数据框。它们共享相同的两个列名。我想将第二列重命名为数据框的名称。

示例数据:

df1 <- data.frame(A = 1:10, B= 11:20)
df2 <- data.frame(A = 21:30, B = 31:40)
df3 <- data.frame(A = 31:40, B= 41:50)
df4 <- data.frame(A = 51:80, B = 61:70)

listDF <- list(df1, df2,df3, df4)

我正在尝试使用 lapply 重命名第二列以匹配数据框的名称。
# trying to rename second column after the element of the list they're located in
listDF_2 <- lapply(names(listDF), function(x) setNames(listDF[[x]], x) )

最佳答案

要跟踪名称,您可以使用:

listDF <- list(df1 = df1, df2 = df2, df3  = df3, df4 = df4)

然后你可以使用 for 循环:
for (i in names(listDF)){
  colnames(listDF[[i]]) <- c("A", i)
}

或者如果你需要使用 lapply,你可以使用这个:
newDF <- lapply(names(listDF), function(x){
  colnames(listDF[[x]]) <- c("A", x)
  listDF[[x]]
})
names(newDF) <- names(listDF)

关于根据R中的列表名称重命名数据框的列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51314582/

10-12 16:30