如何将向量直接传入多参数函数的参数列表?
如何将向量直接传入多参数函数的参数列表?
嘿,我懂你想要的便捷操作——不用先把向量存进变量再挨个取索引,直接让向量的元素自动对应到函数的多个参数里对吧?
你直接写ex_func(runif(2, 1, 0))的时候,R会把整个向量当成第一个参数x传给函数,而y就没收到对应的值,自然达不到你想要的效果。
这时候用do.call()函数就正好解决问题!它的核心作用就是把列表里的元素分别对应到函数的参数上。你只需要把runif生成的向量转成列表,再传给do.call就行,代码示例如下:
ex_func <- function(x, y) { return(x^4 - x^2 - y) } # 自动将向量元素分配给函数的x和y参数 do.call(ex_func, as.list(runif(2, 0, 1)))
这里as.list(runif(2, 0, 1))会把生成的向量转换成长度为2的列表,do.call就会把列表的第一个元素传给x,第二个传给y,完全不用手动做索引提取的操作。
要是你的函数有更多参数,只要向量的长度和函数的参数个数匹配,这个方法同样适用,非常省心。
备注:内容来源于stack exchange,提问作者MathCanBeHard
相关产品推荐
相关产品推荐

