【发布时间】:2018-02-11 00:53:09
【问题描述】:
我正在学习 purrr 包中的地图功能,但以下代码不起作用:
library(purrr)
library(dplyr)
df1 = data.frame(type1 = c(rep('a',5),rep('b',5)),
x = 1:10,
y = 11:20)
df1 %>%
group_by(type1) %>%
nest() %>%
map(.$data,with(.x, x + y))
df1 %>%
group_by(type1) %>%
nest() %>%
map(.$data,function(df) df$x + df$y)
对于最后两个代码块,错误返回为:
错误:索引 1 的长度必须为 1
相反,以下两段代码运行良好,
df1 %>%
group_by(type1) %>%
nest() %>% .$data %>%
map(.,~with(.x, .x$x + .x$y))
df1 %>%
group_by(type1) %>%
nest() %>% .$data %>%
map(.,~with(.x, .x$x + .x$y))
谁能帮我理解错误以及如何修复它们?
【问题讨论】:
-
为什么要
group_by() %>% nest()?是否可以使用split()代替? -
您是否有一个特定的用例?在这里,
df1 %>% group_by(type1) %>% mutate(sumxy = x + y)似乎是要走的路。 -
@eipi10,感谢您的帮助!实际的功能比这里的加号操作要复杂得多....
-
@NateDay,感谢您的帮助!拆分绝对是一种选择,在这里我只想了解如何使用 purrr 包中的地图