一方面,我有一个函数,它将向量的组件作为参数。这个功能是这样的:
y_fun = function( x1, x2, x3, x4 ) 2*x1 + x2*x3*log( x4 )
另一方面,我确实不有组件
x1, x2, x3, x4
但是,只有向量(带有这些分量(由给出
vect = c(x1, x2, x3, x4)
对于我的目的来说,将向量组件的值一个接一个地输入到函数的参数中是不太实际的。如何可能在给定向量的元素上评估函数?我尝试过这个(没有成功(:
y_fun( as.list( vect ) )
和这个
elements = noquote( paste0( vect, collapse = ",") )
y_fun( elements )
我们可以使用do.call
do.call(y_fun, as.list(vect))
[1] 2
vect
被创建为未命名向量。它适用于这种情况,但如果函数有很多参数,并且在vect
中传递的参数的顺序不相同,则最好使用命名向量
vect <- c(x1 = x1, x2 = x2, x3 = x3, x4 = x4)
或者简单地命名为list
lst1 <- list(x1 = x1, x2 = x2, x3 = x3, x4 = x4)
do.call(y_fun, lst1)