2009-11-11 13 views
0

我正嘗試使用ROCR軟件包從分析中導出生物測量數據。以下是我迄今爲止完成的代碼:如何從ROCR軟件包導出數據

pred = performance(Matching.Score,Distribution) 
perf = prediction(pred,"fnr", "fpr") 

An object of class 「performance」 

Slot "x.name": 

[1] "False positive rate" 

Slot "y.name": 

[1] "False negative rate" 

Slot "alpha.name": 

[1] "Cutoff" 

Slot "x.values": 

[[1]] 

[1] 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 
[15] 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 
    ...... 

Slot "y.values": 

[[1]] 

[1] 1.00000 0.99999 0.99998 0.99997 0.99996 0.99995 
[15] 0.99986 0.99985 0.99984 0.99983 0.99982 0.99981 
    ...... 

Slot "alpha.values": 

[[1]] 

[1] Inf  1.0427800 1.0221150 1.0056240 1.0032630 0.9999599 
[12] 0.9644779 0.9633058 0.9628996 0.9626501 0.9607665 0.9605930 
    ....... 

這會導致出現多個插槽。我想用所得的值導出到Excel的修改文本文件:

write(pred, "filename")

然而,當我嘗試寫文件時,我得到一個錯誤,指出:

Error in cat(list(...), file, sep, fill, labels, append) : 
    argument 1 (type 'S4') cannot be handled by 'cat' 

是有沒有辦法解決這個問題?

我會很感激任何建議。謝謝!

馬特·彼得森

回答

3

檢查所生成的S4對象與str類結構,提取相關的變量建立一個數據幀,並使用write.table/write.csv導出的結果。例如,對於預測pred

R> library("ROCR") 
R> data(ROCR.simple) 
R> pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels) 
R> perf <- performance(pred, "fnr", "fpr") 
R> str(pred) 
Formal class 'prediction' [package "ROCR"] with 11 slots 
    [email protected] predictions:List of 1 
    .. ..$ : num [1:200] 0.613 0.364 0.432 0.14 0.385 ... 
    [email protected] labels  :List of 1 
    .. ..$ : Ord.factor w/ 2 levels "0"<"1": 2 2 1 1 1 2 2 2 2 1 ... 
    [email protected] cutoffs :List of 1 
    .. ..$ : num [1:201] Inf 0.991 0.985 0.985 0.983 ... 
    [email protected] fp   :List of 1 
    .. ..$ : num [1:201] 0 0 0 0 1 1 2 3 3 3 ... 
    [email protected] tp   :List of 1 
    .. ..$ : num [1:201] 0 1 2 3 3 4 4 4 5 6 ... 
    [email protected] tn   :List of 1 
    .. ..$ : num [1:201] 107 107 107 107 106 106 105 104 104 104 ... 
    [email protected] fn   :List of 1 
    .. ..$ : num [1:201] 93 92 91 90 90 89 89 89 88 87 ... 
    [email protected] n.pos  :List of 1 
    .. ..$ : int 93 
    [email protected] n.neg  :List of 1 
    .. ..$ : int 107 
    [email protected] n.pos.pred :List of 1 
    .. ..$ : num [1:201] 0 1 2 3 4 5 6 7 8 9 ... 
    [email protected] n.neg.pred :List of 1 
    .. ..$ : num [1:201] 200 199 198 197 196 195 194 193 192 191 ... 

R> write.csv(data.frame([email protected], [email protected]), file="result_pred.csv") 

和性能perf

R> str(perf) 
Formal class 'performance' [package "ROCR"] with 6 slots 
    [email protected] x.name  : chr "False positive rate" 
    [email protected] y.name  : chr "False negative rate" 
    [email protected] alpha.name : chr "Cutoff" 
    [email protected] x.values :List of 1 
    .. ..$ : num [1:201] 0 0 0 0 0.00935 ... 
    [email protected] y.values :List of 1 
    .. ..$ : num [1:201] 1 0.989 0.978 0.968 0.968 ... 
    [email protected] alpha.values:List of 1 
    .. ..$ : num [1:201] Inf 0.991 0.985 0.985 0.983 ... 

R> write.csv(data.frame([email protected], 
         [email protected], 
         [email protected]), 
      file="result_perf.csv") 
+0

該訣竅。我錯過了結構論證。非常感謝你! – 2009-11-12 07:07:31