用pROC在R中编写函数绘制ROC曲线

用pROC在R中编写函数绘制ROC曲线,r,function,rstudio,proc,R,Function,Rstudio,Proc,我试图写一个函数,根据不同的评分系统绘制ROC曲线,我必须预测结果 我有一个dataframe data_all,包含“score_1”和“Threshold.2000”列。我根据需要通过以下步骤生成ROC曲线: plot.roc(data_all$Threshold.2000, data_all$score_1) 我的目标是为许多不同的结果(如阈值1000)和分数(分数1、分数2等)生成ROC曲线,但我最初只是尝试为不同的分数设置ROC曲线。我的职能如下: roc_plot <- fu

我试图写一个函数,根据不同的评分系统绘制ROC曲线,我必须预测结果

我有一个dataframe data_all,包含“score_1”和“Threshold.2000”列。我根据需要通过以下步骤生成ROC曲线:

plot.roc(data_all$Threshold.2000, data_all$score_1)
我的目标是为许多不同的结果(如阈值1000)和分数(分数1、分数2等)生成ROC曲线,但我最初只是尝试为不同的分数设置ROC曲线。我的职能如下:

roc_plot <- function(dataframe_of_interest, score_of_interest) {
plot.roc(dataframe_of_interest$Threshold.2000, dataframe_of_interest$score_of_interest)}

roc\u plot这里有一个解决方案可以根据需要工作(即允许用户为感兴趣的
score\u指定不同的值)

这将返回
NULL
。因此,在原始函数中,当您尝试使用
dataframe\u of theu interest$score\u of theu interest
提供
plot.roc
时,您实际上正在输入
plot.roc
a
NULL

当列名存储在对象中时,有几种方法可以通过列名从
data.frame
中提取列(这是在函数中将其作为参数传递时所做的操作)。也许最简单的方法是记住,
data.frame
类似于2D数组类型的对象,因此我们可以使用熟悉的
object[i,j]
语法,但我们要求所有行并按名称指定列,例如,
mtcars[,'mpg']
。如果我们将字符串
'mpg'
分配给一个对象,这仍然有效:

x <- 'mpg'
mtcars[, x]

这里有一个解决方案可以根据需要工作(即允许用户为感兴趣的分数指定不同的值):

这将返回
NULL
。因此,在原始函数中,当您尝试使用
dataframe\u of theu interest$score\u of theu interest
提供
plot.roc
时,您实际上正在输入
plot.roc
a
NULL

当列名存储在对象中时,有几种方法可以通过列名从
data.frame
中提取列(这是在函数中将其作为参数传递时所做的操作)。也许最简单的方法是记住,
data.frame
类似于2D数组类型的对象,因此我们可以使用熟悉的
object[i,j]
语法,但我们要求所有行并按名称指定列,例如,
mtcars[,'mpg']
。如果我们将字符串
'mpg'
分配给一个对象,这仍然有效:

x <- 'mpg'
mtcars[, x]

请提供您的数据样本,因为错误基于您的数据。您可以为此使用
head()
dput()
。如果不允许您共享数据,请尝试使用基本数据集(如MTCARST)重现您的错误谢谢,我已将其编辑为包括mtcars作为示例这是一个基本的理解问题。函数声明如下:
roc\u plot,当您希望始终调用相同的列时:
roc\u plot非常感谢您的帮助!我很感激,请提供您的数据样本,因为错误是基于您的数据。您可以为此使用
head()
dput()
。如果不允许您共享数据,请尝试使用基本数据集(如MTCARST)重现您的错误谢谢,我已将其编辑为包括mtcars作为示例这是一个基本的理解问题。函数声明如下:
roc\u plot,当您希望始终调用相同的列时:
roc\u plot非常感谢您的帮助!非常感谢,这非常有帮助!非常感谢,这非常有帮助!
foo <- function(x, col_name) {
    head(x$col_name)
}
foo(mtcars, mpg)
## NULL
x <- 'mpg'
mtcars[, x]
roc_plot2 <- function(dataframe_of_interest, threshold_of_interest, score_of_interest) {
    plot.roc(dataframe_of_interest[, threshold_of_interest], 
             dataframe_of_interest[, score_of_interest])
}

roc_plot2(mtcars, 'vs', 'mpg')