是否可以在 R 中链接函数?
样本数据:
m <- matrix(c(1:10, 11:20), nrow = 10, ncol = 2)
例如,我想替换以下语句:
step1 <- mean(m)
step2 <- sum(step1)
res <- step2
或者,
res <- sum(mean(m))
像这样:
res <- m@mean()@sum()
在某些情况下,这将大大澄清我的代码。
EDIT1 这是一个虚拟示例。我随机选择了“sum”和“mean”。
Ben 使用 %@% 给出了第一个答案,但是它阻止了在函数中使用额外的参数:
m %@% function1(arg1, arg2) %@% function2(arg1, arg2)
我该如何解决这个问题?
EDIT2 添加一个例子
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")
这个例子似乎适用于查尔斯解决方案:
`%@%` <- 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")
对我来说不太重要,但值得一提的是,以下陈述因查尔斯的解决方案而失败:
xts.ts %@% names <- 'ts name'