如何通过并行将data.frame对象列表添加到新插槽中?

时间:2016-07-21 15:52:11

标签: r list dataframe

我有不同维度的向量列表和不同data.frame对象的列表。我想通过并行添加vec.list到df.list作为新属性。我怎样才能以最快的方式实现这一目标?提前致谢

玩具数据

df.list <- list(
  d1 <- data.frame(
    V1=seq(1, by=2, len=6), V2=seq(6, by=2, len=6),
    V3=letters[seq(1:6)], V4=sample(1:10, 6, replace = FALSE)),
  d2 <- data.frame(
    V1=seq(2, by=3, len=8), V2=seq(6, by=3, len=8),
    V3=letters[seq(1:8)], V4=sample(1:10, 8, replace = FALSE)),
  d3 <- data.frame(
    V1=seq(4, by=3, len=5), V2=seq(9, by=3, len=5),
    V3=letters[seq(1:5)], V4=sample(1:8, 5, replace = FALSE))
)

我要通过并行添加它们的向量:

vec.list <- list(sc1 <- c(1,3,5,6,7,8), 
                 sc2 <- c(2,4,5,7,9,10,14,16), 
                 sc3 <- c(6,10,11,13,15))

2 个答案:

答案 0 :(得分:3)

试试这个:

library(dplyr)
library(purrr)

df.list.new <- map2(.x = df.list , 
                    .y = vec.list , 
                    .f = function(x, y) bind_cols(x, data.frame('sc' = y)))

答案 1 :(得分:2)

使用基本功能,

df.list.new = Map(cbind, df.list, sc = vec.list)

不幸的是,这并不能保留您的列表名称。但他们可以重新分配

names(df.list.new) = names(df.list)