将多变量函数应用于 R 中的向量
Apply a multi-variable function to a vector in R
我想定义任意数量变量的任意函数,例如,对于 2 个变量:
func2 <- function(time, temp) time + temp
我想保留在问题中有意义的变量名(上面的时间和温度)。
如果我有这些变量的值向量,例如在二维情况下,c(10, 121),我想应用我的函数(此处为 func2)并获得结果。从概念上讲,
func2(c(10,121))
变成
func2(10,121)
对于任意数量的变量,是否有一种简单的方法可以实现这一点?
谢谢
您可以编写一个辅助函数,借助 do.call
将一个简单的向量转换为参数
splat <- function(f,v) {
do.call(f, as.list(v))
}
splat(func2, c(10,121))
这是您要找的吗?
f = function(f,...) {
v = list(...)
Reduce(f, v)
}
> f(f = "+", x = pi, y = exp(1), z = pi^2)
15.72948
我想定义任意数量变量的任意函数,例如,对于 2 个变量:
func2 <- function(time, temp) time + temp
我想保留在问题中有意义的变量名(上面的时间和温度)。
如果我有这些变量的值向量,例如在二维情况下,c(10, 121),我想应用我的函数(此处为 func2)并获得结果。从概念上讲,
func2(c(10,121))
变成
func2(10,121)
对于任意数量的变量,是否有一种简单的方法可以实现这一点?
谢谢
您可以编写一个辅助函数,借助 do.call
splat <- function(f,v) {
do.call(f, as.list(v))
}
splat(func2, c(10,121))
这是您要找的吗?
f = function(f,...) {
v = list(...)
Reduce(f, v)
}
> f(f = "+", x = pi, y = exp(1), z = pi^2)
15.72948