use*_*462 5 r data-manipulation dplyr purrr mutate
我有一个小标题:
df = tibble(one = list('a', 'b'), two = list(c('p1', 'p2', 'p3'), NA_character_), three = list(NA_character_, c('z1', 'z2', 'z3')))
df
# A tibble: 2 x 3
one two three
<chr> <list> <list>
1 a <chr [3]> <chr [1]>
2 b <chr [1]> <chr [3]>
Run Code Online (Sandbox Code Playgroud)
我想替换丢失的值的列two和three与列的值one使用coalesce(),然后在折叠每个字符向量(横行)two和three成使用单个串toString()。我的预期输出如下所示:
df = tibble(one = c('a', 'b'), two = list('p1, p2, p3', 'b'), three = list('a', 'z1, z2, z3'))
df
# A tibble: 2 x 3
one two three
<chr> <list> <list>
1 a <chr [1]> <chr [1]>
2 b <chr [1]> <chr [1]>
Run Code Online (Sandbox Code Playgroud)
这是我最初尝试的内容:
df %>% mutate_at(vars(two, three), funs(coalesce(., one) %>% map(., toString)))
Run Code Online (Sandbox Code Playgroud)
我知道funs()引用了它的参数,但是我不明白为什么它不能与管道一起使用。该文档还建议您funs不要使用它,但是我不确定该用什么。我想知道是否有人可以阐明上述原因为何不起作用,因为我根本不了解范围动词的内部工作原理。
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |