2017-09-29 5 views
0

私はbarplot()data.frameが数値でないと読み取るとき、棒グラフにy軸をスケールする方法? 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". 

から引数log = "y"の問題を抱えています。私は対数スケールで 'Y' 軸をしたいと思い enter image description here

> 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" 
    ))) 

今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]) 

以上が生じるはずです。 log = "y",を追加した後、私は得る:

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

掘りのビットの後、私は私のデータが数値ではないかもしれません実現しましたか?わからない正しくチェックする場合は:

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

は、だから私が試した:

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

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

私はまだ取得:コメントが述べたように

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

データフレームがありません。マトリックスがあります。それを 'as.data.frame()'でデータフレームに変換し、カラムを数値に変換します。 (または、このデータを読み取ったときにアップストリームの問題を修正してください)。 – Gregor

+0

data < - data.matrix(as.data.frame(data)、rownames.force = NA)はうまく動作しません。 –

+0

データフレームではなく行列をより簡単にするには、 'mode(data)=" numeric "' – Gregor

答えて

関連する問題