将新向量添加到嵌套列表

问题描述 投票:0回答:2

我刚刚学习使用R中的列表,我已经非常接近我想要做的事情了。我正朝着正确的方向伸出手来:

my_data <- 
  data.frame(group = c(sample(c('A', 'B', 'C'), 20, replace = TRUE)), 
                      x = runif(100, 0, 10)) %>% 
  group_by(group) %>% 
  nest() %>% 
  mutate(number = sample(3:7, 3))

What I'd like to do:

简单,真的。我想在嵌套列表(“data”)中添加一个新的向量,其中包含“number”向量中的相应值。因此,例如,列表中第一个元素的前5行看起来像这样:

head(my_data$data[[1]],5) %>% mutate(y=4)

但我不知道该怎么做! (显然我对上面的例子进行了硬编码。)

I've tried:

大量的排列,不需要,地图,采摘的排列。我没有记录我尝试过的所有东西。

r purrr
2个回答
1
投票

如果我理解正确,您尝试创建一个添加新列的函数:

require(tidyverse)

my_data <- my_data %>% 
  mutate(data = map(data, function(x) { 
    x %>% 
      mutate(y = 4)
    }))

结果:

my_data$data[1]
[[1]]
# A tibble: 30 x 2
        x     y
    <dbl> <dbl>
 1 5.97       4
 2 7.44       4
 3 9.96       4
 4 9.98       4
 5 0.0933     4
 6 1.45       4
 7 9.78       4
 8 6.88       4
 9 5.10       4
10 6.68       4

1
投票

在有两个向量迭代的情况下使用purrr::map2

library(tidyverse)
my_data <- my_data %>% mutate(data_mod=map2(data,number,cbind))
© www.soinside.com 2019 - 2024. All rights reserved.