2013-01-18 33 views
0

中的函數值,如何檢索結果值。例如,我使用'roc'函數,並且需要提取AUC值和CI(在以下示例中分別爲0.6693和0.6196-0.7191)。如何在R中調用函數時檢索R

> roc(tmpData[,lenCnames], fitted(model), ci=TRUE) 

Call: 
roc.default(response = tmpData[, lenCnames], predictor = fitted(model),  ci = TRUE) 

Data: fitted(model) in 127 controls (tmpData[, lenCnames] 0) < 3248 cases (tmpData[, lenCnames] 1). 
Area under the curve: 0.6693 
95% CI: 0.6196-0.7191 (DeLong) 

我可以使用以下命令來獲取這些值和關聯的文本。

> z$auc 
Area under the curve: 0.6693 
> z$ci 
95% CI: 0.6196-0.7191 (DeLong) 

有沒有辦法只獲取值而不是文本。

我現在要做的是如何使用'正則表達式'或'strsplit'函數來獲取這些信息,但我懷疑應該有其他方法來直接訪問這些值。

+0

來自r cran的pROC包 – user1140126

+1

對於包含示例數據集的可重複示例會很好。這將幫助我們使答案更有價值。 – Jochem

+0

@阿倫,感謝as.numeric工作。 – user1140126

回答

2

提問時使用可重複的示例很有幫助。因爲它沒有加載基數R,所以也最好引用您要查詢的庫(「pROC」)。pROC具有從roc對象中提取aucci.auc對象的功能。

>library("pROC") 
>data(aSAH) 
# Basic example 
>z <- roc(aSAH$outcome, aSAH$s100b, 
    levels=c("Good", "Poor")) 

# Examining the class of 'auc' output shows us that it is also of class 'numeric' 
> class(auc(z)) 
[1] "auc"  "numeric" 
# calling 'as.numeric' will extract the value 
> as.numeric(auc(z)) 
[1] 0.7313686 

# calling 'as.numeric' on the 'ci.auc' object extracts three values. 
as.numeric(ci(z)) 
[1] 0.6301182 0.7313686 0.8326189 

# The ones we want are 1 and 3 
> as.numeric(ci(z))[c(1,3)] 
[1] 0.6301182 0.8326189 

使用功能strclassattributes往往會幫助你找出如何獲得你想要的對象是什麼。