2009-11-11 5 views
0

J'essaie d'exporter des données biométriques à partir d'une analyse à l'aide du package ROCR. Voici le code que j'ai fait jusqu'à présent:Comment exporter des données à partir du package 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 
    ....... 

Cela se traduit par plusieurs emplacements. Je voudrais exporter les valeurs résultantes dans un fichier texte pour la modification Excel à l'aide:

write(pred, "filename")

Cependant, lorsque je tente d'écrire le fichier, je reçois une erreur indiquant:

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

Est il y a un moyen de contourner cela?

J'apprécierais n'importe quel conseil. Je vous remercie!

Matt Peterson

Répondre

3

Vérifiez la structure de classe des résultant S4 objets avec str, extraire les variables pertinentes pour construire une trame de données et utiliser write.table/write.csv pour exporter les résultats. Par exemple, pour la prédiction 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") 

et pour la performance 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

qui a fait l'affaire. Il me manquait l'argument de la structure. Merci beaucoup! –

Questions connexes