假设我有以下功能
SlowFunction = function(vector){
return(list(
mean =mean(vector),
sd = sd(vector)
))
}
我想使用dplyr:summarise将结果写入数据框:
iris %>%
dplyr::group_by(Species) %>%
dplyr::summarise(
mean = SlowFunction(Sepal.Length)$mean,
sd = SlowFunction(Sepal.Length)$sd
)
有人建议我通过一次而不是两次调用“ SlowFunction”来做到这一点吗? (在我的代码中,“ SlowFunction”是一个慢速函数,我必须多次调用它。)当然,无需将“ SlowFunction”分成两部分。因此,实际上我想以某种方式在一个数据框中填充数据列的多个列。
最佳答案
一个选项是用于将SlowFunction
的输出存储在list
的data.frame
列中,然后使用unnest
iris %>%
group_by(Species) %>%
summarise(res = list(as.data.frame(SlowFunction(Sepal.Length)))) %>%
unnest()
## A tibble: 3 x 3
# Species mean sd
# <fct> <dbl> <dbl>
#1 setosa 5.01 0.352
#2 versicolor 5.94 0.516
#3 virginica 6.59 0.636