r data.table:应用以向量和矩阵为参数的函数

时间:2018-12-15 16:50:09

标签: r data.table

我有一个data.table,其中包含以下列:

OOSResults <-
  as.data.table(structure(
    list(
      c("1", "1", "1"),
      structure(c(17873, 17876, 17877), class = "Date"),
      c(48, 47, 55),
      c(22, 25, 20),
      c(31, 29, 25)
    ),
    .Names = c("score", "Date", "probH", "probD", "probA"),
    row.names = c(NA,-3L),
    class = c("data.table", "data.frame"),
    sorted = "score"
  ))

-

现在,我想应用ModelMetrics的mLogLoss。它要求

  

用法

     

mlogLoss(实际的,预测的)

     

参数

     

actual标签的向量。可以是数字,字符或因子

     

预测值的预测矩阵。可以是矩阵,data.frame

如何将此功能应用于我的data.table,仍然能够使用灵活的方式进一步分析我的data.table,即按日期显示的LogLoss,以及其他任何列,而不会丢失我的data.table。

我尝试过:

OOSResults[, mapply(ModelMetrics::mlogLoss, score, as.matrix(probA/100,probD/100,probH/100))]

最好的问候, 基督徒

2 个答案:

答案 0 :(得分:1)

这里的第一个问题,感谢您的支持。经过进一步尝试,我得到了:

OOSResults2[,mlogLoss(score,as.data.frame(.(probH,probD,probA))),by=Date]

答案 1 :(得分:0)

我想您知道如何使用mlogLossscore计算probA,可以这样进行:

ModelMetrics::mlogLoss(OOSResults$score, as.matrix(OOSResults$probA/100))

现在要使用三个不同的概率列进行计算,您可以使用mapply来进行计算,如下所示:

mapply(function(prob, by){ModelMetrics::mlogLoss(by, as.matrix(prob))}, 
       OOSResults[, c("probH", "probD", "probA")]/100,
       OOSResults[, "score"])

希望有帮助。