我刚刚学习使用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))
简单,真的。我想在嵌套列表(“data”)中添加一个新的向量,其中包含“number”向量中的相应值。因此,例如,列表中第一个元素的前5行看起来像这样:
head(my_data$data[[1]],5) %>% mutate(y=4)
但我不知道该怎么做! (显然我对上面的例子进行了硬编码。)
大量的排列,不需要,地图,采摘的排列。我没有记录我尝试过的所有东西。
如果我理解正确,您尝试创建一个添加新列的函数:
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
在有两个向量迭代的情况下使用purrr::map2
library(tidyverse)
my_data <- my_data %>% mutate(data_mod=map2(data,number,cbind))