我注意到这里有很多使用的例子dplyr::mutate
与返回多个输出的函数结合以创建多个列。例如:
tmp <- mtcars %>%
group_by(cyl) %>%
summarise(min = summary(mpg)[1],
median = summary(mpg)[3],
mean = summary(mpg)[4],
max = summary(mpg)[6])
然而,这种语法意味着summary
在这个例子中,函数被调用了 4 次,这似乎不是特别有效。有哪些方法可以有效地将列表输出分配给列名列表summarise
or mutate
?
例如,来自上一个问题:使用 dplyr (或其他方式)将包含列表的数据框列拆分为多个列 https://stackoverflow.com/questions/38177908/split-a-data-frame-column-containing-a-list-into-multiple-columns-using-dplyr-o,我知道你可以分配输出summary
作为列表,然后使用拆分它do(data.frame(...))
,但这意味着您必须稍后添加列名称,并且语法不太漂亮。
The tie
Romain Francois 的软件包可以非常巧妙地做到这一点
devtools::install_github("romainfrancois/tie")
library('tidyverse')
library('tie')
tmp <- mtcars %>%
group_by(cyl) %>%
bow( tie(min, median, mean, max) := summary(mpg)[c(1,3,4,6)] )
注意使用:=
而不是=
.
tidyverse 团队考虑了在 summarise 中使用返回向量(而不是标量)的函数的问题https://github.com/tidyverse/dplyr/issues/154 https://github.com/tidyverse/dplyr/issues/154以及其中引用的进一步帖子。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)