Как я могу переименовать столбцы и связать кадры данных в цикле? - PullRequest
0 голосов
/ 05 марта 2019

Ниже приведен пример того, что я пытаюсь сделать: мне нужно повторить столбцы 1 и 2 и извлечь столбцы 3: n, а затем объединить кадры данных в 1 набор данных. Как включить функцию name в цикл, а также связать кадры данных? Количество столбцов в моих реальных данных может измениться, поэтому мне нужно сделать это динамическим ... спасибо.

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)

1 Ответ

0 голосов
/ 05 марта 2019

Найден ответ, опубликованный Stibu в 2016 году. По крайней мере, переименование части головоломки.

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