我可以通过分配一个col.names列表在R中从现有data.frame中创建一个data.frame?

问题描述:

我有,我分配给每个column.name变量的矢量的data.frame:我可以通过分配一个col.names列表在R中从现有data.frame中创建一个data.frame?

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

这是你想要的东西:'data.frame(setNames(DAT1,paste0(名称(DAT1) ,“1”)),setNames(dat2,paste0(names(dat1),“2”)))' –

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)