【问题标题】:R: how to evaluate a function over components of a given vectorR:如何在给定向量的分量上评估函数
【发布时间】:2022-06-13 04:44:35
【问题描述】:

一方面,我有一个函数,它以向量的分量作为参数。这个函数是这样的:

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 )

【问题讨论】:

    标签: r


    【解决方案1】:

    我们可能会使用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)
    

    【讨论】:

    • 这是一个很好的解决方案,效果很好,谢谢。是的,名字也很有用......
    猜你喜欢
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多