我有一个data.frame,我为每个column.name分配一个变量向量:
dat1 <- data.frame(a=1:5,b=1:5,c=1:5)
我想创建一个新的data.frame,但不是单独分配每个列,我想一次分配它们。例如,如果我想将它们全部重命名:
dat.new <- data.frame(paste(names(dat1),'1',sep='') = dat1)
这显然很有效。有没有办法让它发挥作用?
我知道我可以使用names()
重命名,但实际上看起来有用的方案是组合多个共享相同col.names的数据集(我不想简单地使用它) rbind):
dat1 <- data.frame(a=1:5,b=1:5,c=1:5)
dat2 <- data.frame(a=6:10,b=6:10,c=6:10)
dat.new <- data.frame(paste(names(dat1),'1',sep='') = dat1, paste(names(dat1),'2',sep='') = dat2)
答案 0 :(得分:0)
library(dplyr)
library(tidyr)
library(magrittr)
好的,这是第一部分:
dat2 =
dat1 %>%
setNames(names(.) %>%
paste0("1") )
这是第二部分。重塑有点复杂但更灵活,特别是如果你的行ID已经有不同的行数:
list(dat1, dat2) %>%
bind_rows(.id = "number") %>%
group_by(number) %>%
mutate(id = 1:n()) %>%
gather(variable, value, -number, -id) %>%
unite(new_variable, variable, number) %>%
spread(new_variable, value)