我只是在学习与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))
我想做什么:
很简单,真的。我想将一个新向量添加到嵌套列表("数据")中,其中包含来自"数字"向量的相应值。因此,例如,列表中第一个元素的前5行看起来像这样:
head(my_data$data[[1]],5) %>% mutate(y=4)
,但我不知道该怎么做!(显然我对上面的示例进行了核对。)
我已经尝试过:
大量的非列表,Unnest,Map,Pull的排列。我没有记录我尝试过的所有东西。
如果我正确理解您,您将尝试创建一个添加新列的函数:
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))