在数据框中组合向量和列表列

combining vector and list columns within a data frame

我正在尝试确定如何将作为向量的列添加到作为同一数据框中的列表的列

library(tidyverse)

df <- data_frame(
  dens = rnorm(1000),
  id = sample(1:10, 1000, replace = TRUE),
  size = sample(1:3, 1000, replace = TRUE)
) %>% 
  group_by(id, size) %>% 
  nest %>% 
  mutate(
    dens_est = map(data, ~ KernSmooth::bkde(.$dens) %>% 
                 bind_rows)
  )

使用上面的结果,我想在 dens_est 数据框中添加一列,其中包含 size 列的关联值。

使用 mutate 和 map2:

df %>%
  mutate(data = map2(data, size, 
         function(x, y) mutate(x, size = y)))

我们可以使用 map2 遍历 dens_estsize 列,并使用 mutate 为每个数据框创建 size 列。

set.seed(1234)

library(tidyverse)

df <- data_frame(
  dens = rnorm(1000),
  id = sample(1:10, 1000, replace = TRUE),
  size = sample(1:3, 1000, replace = TRUE)
) %>% 
  group_by(id, size) %>% 
  nest %>% 
  mutate(
    dens_est = map(data, ~ KernSmooth::bkde(.$dens) %>% 
                     bind_rows)
  ) %>%
  mutate(
    dens_est = map2(dens_est, size, ~.x %>% mutate(Size = .y))
  )

df$dens_est[[1]]
# # A tibble: 401 x 3
#       x          y  Size
#   <dbl>      <dbl> <int>
# 1 -4.38 0.00000568     3
# 2 -4.35 0.0000118      3
# 3 -4.33 0.0000159      3
# 4 -4.30 0.0000185      3
# 5 -4.27 0.0000213      3
# 6 -4.25 0.0000246      3
# 7 -4.22 0.0000284      3
# 8 -4.20 0.0000327      3
# 9 -4.17 0.0000376      3
# 10 -4.14 0.0000432     3
# # ... with 391 more rows