bar*_*nus 5 r function apply evaluate sapply
我知道我可以使用apply评估一个包含许多数据的函数,但是我可以使用一个数据评估许多函数吗?使用sapply我可以得到:
sapply(list(1:5,10:20,5:18), sum)
Run Code Online (Sandbox Code Playgroud)
但我想要像这样的东西:
sapply(1:5, list(sum, min,max))
Run Code Online (Sandbox Code Playgroud)
得到
15 1 5
Run Code Online (Sandbox Code Playgroud)
有什么聪明的主意吗?:)
交换参数顺序,因为您循环遍历函数而不是数据.
sapply(list(sum, min, max), function(f) f(1:5))
Run Code Online (Sandbox Code Playgroud)
计算摘要统计信息的两种最优选的现代方法使用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))
Run Code Online (Sandbox Code Playgroud)
该dplyr-idiomatic风格是建立基于表达式链接.
data %>%
summarise(min = min(x), max = max(x), sum = sum(x))
data %>%
summarise_each(funs(min, max, sum))
Run Code Online (Sandbox Code Playgroud)
对于程序化使用(与交互式使用相反),建议使用下划线后缀函数和公式用于非标准评估.
data %>%
summarise_(min = ~ min(x), max = ~ max(x), sum = ~ sum(x))
data %>%
summarise_each_(funs_(c("min", "max", "sum"), "x")
Run Code Online (Sandbox Code Playgroud)
请参阅agstudy对该data.table解决方案的回答.
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |