Có thể chuỗi các chức năng trong R?Phương pháp xích với R
mẫu dữ liệu:
m <- matrix(c(1:10, 11:20), nrow = 10, ncol = 2)
Ví dụ, tôi muốn thay thế những điều khoản sau đây:
step1 <- mean(m)
step2 <- sum(step1)
res <- step2
Hoặc,
res <- sum(mean(m))
Với một cái gì đó như thế này:
res <- [email protected]()@sum()
Trong một số trường hợp, điều đó sẽ làm rõ mã của tôi đáng kể.
EDIT1 Đây là ví dụ giả. Tôi chọn ngẫu nhiên 'sum' và 'mean'.
Ben đã đưa ra một mảnh đầu tiên của câu trả lời bằng% @% tuy nhiên, nó ngăn chặn từ việc sử dụng lập luận thêm trong chức năng:
m %@% function1(arg1, arg2) %@% function2(arg1, arg2)
Làm thế nào tôi có thể làm việc xung quanh đó?
EDIT2 Thêm một ví dụ
require(xts)
require(PerformanceAnalytics)
xts.ts <- xts(rnorm(231),as.Date(13514:13744,origin="1970-01-01"))
plot(na.omit(lag(rollapply(xts.ts, width=rolling.per-1, FUN= function(x){sqrt(var(x))*sqrt(252)}), k=1)), main = "Dummy Example")
Ví dụ này dường như làm việc tốt với Charles giải pháp:
`%@%` <- function(x, f) eval.parent(as.call(append(as.list(substitute(f)), list(x), 1)))
xts.ts %@% rollapply(width = rolling.per-1, FUN= function(x) x%@%var%@%sqrt * sqrt(252)) %@% lag(k=1) %@% na.omit %@% plot(main = "Dummy Example")
Ít quan trọng đối với trường hợp của tôi, nhưng woth nhắc đến, các Statment sau không thành công với giải pháp của Charles :
xts.ts %@% names <- 'ts name'
Có gì sai với 'res <- sum (mean (m))'? –
Không có gì, nhưng nó không có ý nghĩa nhiều để lấy 'tổng hợp' của một chiều dài 1 vector (đó là những gì được trả về bởi' mean' trên một ma trận). – Henrik
Mặc dù nó sẽ biến mất "sớm", vẫn còn một hàm 'mean.data.frame' trả về một vectơ. –