2017-09-29 23 views
0

Je rencontre des problèmes avec l'argument log = "y" de barplot()Comment enregistrer l'axe y sur un graphique à barres lorsque le fichier data.frame est non-numérique? R

 ADR BCLREQ CALL BOND FUT  CD CDS CDX 
IO Only "0" "3"   "0"  "0" "0" "1" 
IO and TS "0" "0"   "0"  "0" "0" "0" 
No Changes "5" "45"  "9"  "39" "2" "11" 
TS Only "0" "0"   "0"  "0" "0" "0" 
Freq  "5" "48"  "9"  "39" "2" "12". 

.

> dput(data) 
structure(c("0", "0", "5", "0", "5", "3", "0", "45", "0", "48", 
"0", "0", "9", "0", "9", "0", "0", "39", "0", "39", "0", "0", 
"2", "0", "2", "1", "0", "11", "0", "12"), .Dim = 5:6, .Dimnames = list(
    c("IO Only", "IO and TS", "No Changes", "TS Only", "Freq" 
    ), c("ADR", "BCLREQ CALL", "BOND FUT", "CD", "CDS", "CDX" 
    ))) 

Maintenant, le barplot

BAR2 <- barplot(data[1:4,], main = "Build Efficiency", ylab = "Manual Frequency", 
           xlab = "IO Screen", beside = F, log = "y", 
           col = c("blue", "green", "red", "yellow"), las = 1, legend.text = rownames(data)[1:4]) 

Le ci-dessus devrait entraîner: enter image description here

Je voudrais faire l'axe 'Y' échelle logarithmique. après avoir ajouté log = "y", je reçois:

Error in height + offset : non-numeric argument to binary operator 

Après un peu de creuser, j'ai réalisé mes données pourraient ne pas être numérique? pas sûr de vérifier correctement mais:

> str(data[1,2]) 
chr "3" 

J'essayé:

data <- data.matrix(data, rownames.force = NA) 

    data[1:5,] <- sapply(data[1:5,], as.numeric) 

Je reçois encore:

Error in height + offset : non-numeric argument to binary operator 
+1

Vous n'avez pas de trame de données, vous avez une matrice. Transformez-le en un cadre de données avec 'as.data.frame()', puis convertissez les colonnes en numérique. (Ou corrigez le problème en amont partout où vous lisez ces données). – Gregor

+0

data <- data.matrix (as.data.frame (données), rownames.force = NA) ne fonctionne pas très bien. –

+0

Si vous voulez une matrice pas une trame de données, une manière plus simple est 'mode (data) =" numeric "' – Gregor

Répondre