我有一个数据框,其中包含许多嵌套的子数据框,我想对每个嵌套的子数据框应用dplyr::select函数。以下是一个示例:
library(tidyverse)
mtcars %>%
group_by(cyl) %>%
nest %>%
mutate(data2 = ~map(data, dplyr::select(.,-mpg)))
我认为这将导致一个有三列的数据框。 cyl
: 气缸数,data
: 嵌套数据,data2
: 与 data 相同,除了每个元素都没有 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)))
。 - Russ HydesessionInfo()
输出描述R版本和所有软件包的版本。 - IRTFM