【问题标题】:using sapply with a function that has multiple arguments将 sapply 与具有多个参数的函数一起使用
【发布时间】:2021-06-02 11:22:25
【问题描述】:

我有一个包含多个数据框的列表(称为 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 并在 sapply 参数中传递来自 BTm 而不是 ..... 的所有参数(文档说:... FUN 的可选参数)。

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

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

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

【问题讨论】:

    标签: r bradleyterry2


    【解决方案1】:

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

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

    lapply 也应如此。

    【讨论】:

      【解决方案2】:

      我们可以使用map

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

      【讨论】:

        猜你喜欢
        • 2018-12-06
        • 1970-01-01
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多