Swap trình tự lập luận, vì bạn đang Looping trên các chức năng không dữ liệu.
sapply(list(sum, min, max), function(f) f(1:5))
Hai cách tiếp cận hiện đại được ưa thích nhất để tính toán thống kê tóm tắt sử dụng dplyr
và data.table
gói. dplyr
có nhiều giải pháp (chỉ hoạt động với khung dữ liệu, không phải vectơ) sử dụng summarise
hoặc 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))
Kiểu dplyr
là cách đơn giản để xây dựng biểu thức sử dụng chaining.
data %>%
summarise(min = min(x), max = max(x), sum = sum(x))
data %>%
summarise_each(funs(min, max, sum))
Để sử dụng chương trình (như trái ngược với sử dụng tương tác), các chức năng nhấn-hậu tố và formulae được đề nghị cho non-standard evaluation.
data %>%
summarise_(min = ~ min(x), max = ~ max(x), sum = ~ sum(x))
data %>%
summarise_each_(funs_(c("min", "max", "sum"), "x")
Xem agstudy's answer cho các giải pháp data.table
.
Nguồn
2013-07-18 10:55:36