将 sapply 与具有多个参数的函数一起使用

时间:2021-06-02 11:22:25

标签: r

我有一个包含多个数据框的列表(称为 prep1)。每个数据框具有以下格式(仅显示前 6 行)

 player1        player2  win1 win2
  1 a12TTT.pdf  a21.pdf    0    1
  2 a12TTT.pdf  B11.pdf    1    0
  3 a12TTT.pdf  B12.pdf    1    1
  4 a12TTT.pdf  B24.pdf    0    2
  5 a12TTT.pdf  B4.pdf     0    1
  6 a12TTT.pdf  B8.pdf     0    1   

我想使用 BradleyTerry2 包中的函数 BTm 对数据建模。
对于单个数据框,函数是

BTm(cbind(win1,win2), player1, player2, data= your.data.frame.name) 

我尝试做同样的事情,但在列表中的所有数据帧上一次使用 sapply 并传递来自 BTm 的所有参数而不是 ..... 在 sapply 参数中(文档说:... FUN 的可选参数).

sapply (prep1, BTm, cbind(win1, win2), player1, player2, data = prep1)

它让我出现以下错误 Error in FUN(X[[i]], ...) : object 'player2' not found 如果我使用 lapply,我会遇到同样的错误。

我不知道如何正确传递所有参数。你能帮忙吗?

2 个答案:

答案 0 :(得分:0)

为了清晰起见,使用匿名函数 -

sapply(prep1, function(x) BTm(cbind(win1,win2), player1, player2, data= x))

同样适用于 lapply

答案 1 :(得分:0)

我们可以使用map

library(purrr)
map(prep1, ~ BTm(cbind(win1, win2), player1, player, data = .x))