首页 > 解决方案 > 如何在循环中重命名列和绑定数据框?

问题描述

下面是我正在尝试做的一个示例:我需要重复第 1 列和第 2 列并提取第 3:n 列,然后将数据帧组合成 1 个数据集。如何在循环中包含名称函数并绑定数据框?列数可以根据我的真实数据而改变,因此我需要使这个动态......谢谢。

library(dplyr)

nam <- c("j","g","r")
id <- c(1,2,3)
c1 <- c("fdg","afa","hdfg")
c2 <- c("gfdsfaf","sfgsgs","agafaf")
c3 <- c("hdfg","sgs","rtwe")

y <- data.frame(nam,id,c1,c2,c3)

cntr <- ncol(y)-2

#create dataframes
for(i in 1:cntr){
   (assign(paste0("r",i),as.data.frame(y[,c(1:2,i+2)])))
  }

#rename section
names(r1)[3] <- "c"
names(r2)[3] <- "c"
names(r3)[3] <- "c"

#stack dataframes
xyz <- bind_rows(r1,r2,r3)

标签: loopsbindingrename

解决方案


找到了 Stibu 在 2016 年发布的答案。至少是重命名难题的一部分。

for (i in paste0("r",1:cntr)){
  call <- bquote(names(.(as.name(i)))[3] <- "c")
  eval(call)
}

推荐阅读