0

我正在尝试将roc()pROC 包中的函数应用于 dataframe 中的特定变量,其中的df子集df$site由看起来像“01”、“02”、“03”的字符组成。该函数roc()返回一个列表,因此我希望我的对象roc_site是一个列表,该列表又包含每个站点的结果列表。

roc_site <- dlply(
  .data = df, 
  .variables = "site", 
  .fun = roc, 
  .progress = "text",
  response = df$Risk,
  predictor = df$Rating, 
  na.rm = TRUE, plot = TRUE)

这运行成功,并且roc_site是一个列表,每个站点包含一个列表,但每个站点的结果是相同的;它没有将数据框分开。我错过了什么?

4

1 回答 1

2

.fun您传递给的函数dlply需要接受数据帧的整个块作为其(第一个)参数。

所以在这种情况下,你真正想要的是编写你自己的小函数,它将获取你的数据框并计算你想要的。例如

foo <- function(x){
    roc(x$Risk, x$Rating, na.rm = TRUE, plot = TRUE)
}

然后将该函数传递给.fun.

您获得相同结果的原因是,对于每个块,dlply都在调用您的块,但每次都roc传递df$Risk和,这些是整个数据集的向量。df$Rating

于 2012-07-04T02:03:37.950 回答