将具有多个输入参数的函数应用于矢量

Apply function with several input parameters to vector

提问人: 提问时间:6/30/2023 更新时间:7/1/2023 访问量:29

问:

我编写了一个带有两个输入参数的函数。stats.calc(tr,pr)

如果只有一个输入参数,我可以使用:stats.calc()

trrange <- seq(0.05,0.9,0.01)

df <- sapply(trrange, stats.calc) |> t() |> as.data.frame() 

将此函数应用于向量。

是否有可能将此行用于具有两个输入参数的函数?

如果这个问题不清楚,请告诉我!

R DataFrame 函数 输入 应用

评论

1赞 LMc 7/1/2023
如果您尝试并行迭代两个参数,则可以使用:mapplymapply(stats.calc, trrange, prrange)
1赞 GuedesBF 7/1/2023
请分享一两个所需用例的例子,否则我们只能猜测。

答:

0赞 Nir Graham 6/30/2023 #1

Sapply 接受 (...) 参数,因此它相对微不足道。例如

add_what <- function(x,what){
  x+what
}

sapply(1:3,add_what,what=4)

也许你想问一些更复杂的东西,这取决于第二个参数是以某种方式变化,还是以某种方式来自数据。

0赞 jkt 7/1/2023 #2

我会使用索引:

trrange <- seq(0.05,0.9,0.01)
prrange <- seq(5,90,1)


df <- sapply(1:length(trrange), 
      function(i) stats.calc(trrange[i], prrange[i])) 

这取决于您的问题的性质,例如,长度是否与?如果没有,您可能需要添加重复项,或者如果只是一个值,则根本不需要为其编制索引。在这种情况下,尼尔·格雷厄姆(Nir Graham)的答案将起作用。使用使方法更加通用。prrangetrrangeprfunction(i)