我知道我可以使用apply评估多个函数的功能,但是我可以使用一个数据评估多个函数的功能吗?使用sapply,我可以获得:
sapply(list(1:5,10:20,5:18), sum)
但我想要这样的东西:
sapply(1:5, list(sum, min,max))
并得到
15 1 5
有什么好主意吗?:)
交换参数顺序,因为您要遍历函数而不是数据。
sapply(list(sum, min, max), function(f) f(1:5))
用于计算摘要统计信息的两种最优选的现代方法使用dplyr
和data.table
包。dplyr
使用summarise
或有多种解决方案(仅适用于数据帧,不适用于矢量)summarise_each
。
library(dplyr)
data <- data.frame(x = 1:5)
summarise(data, min = min(x), max = max(x), sum = sum(x))
summarise_each(data, funs(min, max, sum))
该dplyr
-idiomatic风格是,以构建表达链接。
data %>%
summarise(min = min(x), max = max(x), sum = sum(x))
data %>%
summarise_each(funs(min, max, sum))
对于程序性使用(相对于交互性使用),建议将带下划线的函数和公式用于非标准评估。
data %>%
summarise_(min = ~ min(x), max = ~ max(x), sum = ~ sum(x))
data %>%
summarise_each_(funs_(c("min", "max", "sum"), "x")
见agstudy的回答了data.table
解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句