r-如何通过向量中的信息动态补充数据帧列表中的colname



我有一个data.frameslist,而每个data.frame中第一列的colname应该由来自向量的动态信息来补充。

示例:

set.seed(1)
df1 <- data.frame(matrix(sample(32), ncol = 8))
names(df1) <- paste(rep(c("a", "b"), each = 4), 1:4, sep = "")
set.seed(2)
df2 <- data.frame(matrix(sample(32), ncol = 8))
names(df2) <- paste(rep(c("a", "b"), each = 4), 1:4, sep = "")
list_dfs <- list(df1, df2)
add_info <- c("add1", "other")

如何添加来自CCD_ 5的信息以将df1中a1的CCD_;a1加1";以及df2中的a1为"1";a1加2";在给定的CCD_ 7结构内以可扩展的方式?其他CCD_ 8不应该被改变。

我尝试了几种在lapplyfor循环中使用paste0设置colnames的方法,并复习了SO上的类似问题,但到目前为止还不能解决这个问题。

您可以执行以下操作:

list_dfs <- lapply(1:length(list_dfs), function(i) {
setNames(list_dfs[[i]],paste(names(list_dfs[[i]]),add_info[[i]]))
})

现在,列表中的第一个dataframe的原始名称与add_info的第一个元素连接,第二个add_info的名称与第二个元素连接。您可以很容易地将其扩展到较长的data.frames和相应的add_info-矢量列表。

更新:如果您只想更改名字,请执行

list_dfs <- lapply(1:length(list_dfs), function(i) {
lastNames <- names(list_dfs[[i]])[2:NCOL(list_dfs[[i]])]
firstName <- paste(names(list_dfs[[i]])[1],add_info[[i]])
setNames(list_dfs[[i]],c(firstName,lastNames))
})

最新更新