【发布时间】:2018-10-22 05:52:23
【问题描述】:
我有一个包含一堆嵌套数据框的数据框,我想将 dplyr::select 应用于每个嵌套数据框。这是一个例子
library(tidyverse)
mtcars %>%
group_by(cyl) %>%
nest %>%
mutate(data2 = ~map(data, dplyr::select(.,-mpg)))
我认为这会产生一个包含三列的数据框。 cyl:柱面数,data:嵌套数据,data2:与数据相同,只是每个元素都没有mpg列。
而是 R 崩溃:
*** caught segfault *** address 0x7ffc1e445000, cause 'memory not mapped' Traceback: 1: .Call(`_dplyr_mutate_impl`, df, dots) 2: mutate_impl(.data, dots) 3: mutate.tbl_df(., data2 = ~map(data, dplyr::select(., -mpg))) 4: mutate(., data2 = ~map(data, dplyr::select(., -mpg))) 5: function_list[[k]](value) 6: withVisible(function_list[[k]](value)) 7: freduce(value, `_function_list`) 8: `_fseq`(`_lhs`) 9: eval(quote(`_fseq`(`_lhs`)), env, env) 10: eval(quote(`_fseq`(`_lhs`)), env, env) 11: withVisible(eval(quote(`_fseq`(`_lhs`)), env, env)) 12: mtcars %>% group_by(cyl) %>% nest %>% mutate(data2 = ~map(data, dplyr::select(., -mpg))) Possible actions: 1: abort (with core dump, if enabled) 2: normal R exit 3: exit R without saving workspace 4: exit R saving workspace
我意识到如果我在嵌套之前应用选择操作,我可以获得我想要的列,但这与我的实际问题不太相似。有人可以向我解释我在这里做错了什么吗?感谢您的建议。
【问题讨论】:
-
你可以重试代码,但使用
mutate(data = map(data, function(x) dplyr::select(x, -mpg))) -
崩溃总是可以报告的。你应该用
sessionInfo()-output 描述R 的版本和所有的包。 -
知道了,我也会提交一份错误报告。