2017-01-19 51 views
0

如何處理錯誤「速率錯誤 - se:二元運算符的非數字參數」?ggplot:geom_errorbar:「var」中的錯誤 - se:二元運算符的非數字參數

我的代碼:

ggplot(df, aes(x=zone, y=rate, fill=race))+geom_bar(stat ="identity",position="dodge")+geom_errorbar(aes(ymin=rate-se, ymax=rate+se)) 

我的數據:

race<-c(1,2,1,2,1,2,1,2) 
zone<-c(0,0,1,1,2,2,3,3) 
rate<-c(10.9,7.7,12.9,9.2,12.5,9.6,10.4,5.1) 
se <-c(0.001,0.103,0.066,0.099,0.0060,0.062,0.096,0.001) 
df <- data.frame(race, zone, rate,se) 

任何提示讚賞。

+0

該代碼工作爲我提供這些數據。你是否得到了不同的數據的錯誤?可能有缺失的值? – Spacedman

+0

Spacedman,我仍然得到這個錯誤。令人沮喪的。我不知道什麼是錯的。 – Maggie

回答

1

我懷疑你有字符數據僞裝成數...

的看上去像是你的數據:

> zorace 
    racecat zone  rate   se 
1  1 0 10.886621 0.001159755 
2  2 0 7.763123 0.103422900 
3  1 1 12.926866 0.065986546 
4  2 1 9.196214 0.098244182 
5  1 2 12.487529 0.060695012 
6  2 2 9.626924 0.062437645 
7  1 3 10.378148 0.096269240 
8  2 3 5.042412 0.001159755 

我沒有得到任何錯誤:

> ggplot(zorace, aes(x=zone, y=rate, fill=racecat))+geom_bar(stat ="identity",position="dodge")+geom_errorbar(aes(ymin=rate-se, ymax=rate+se)) 

但如果我將se列轉換爲字符:

> zorace$se=as.character(zorace$se) 

它看起來幾乎相同:

> zorace 
    racecat zone  rate   se 
1  1 0 10.886621 0.001159755 
2  2 0 7.763123 0.1034229 
3  1 1 12.926866 0.065986546 
4  2 1 9.196214 0.098244182 
5  1 2 12.487529 0.060695012 
6  2 2 9.626924 0.062437645 
7  1 3 10.378148 0.09626924 
8  2 3 5.042412 0.001159755 

但是:

> ggplot(zorace, aes(x=zone, y=rate, fill=racecat))+geom_bar(stat ="identity",position="dodge")+geom_errorbar(aes(ymin=rate-se, ymax=rate+se)) 
Error in rate - se : non-numeric argument to binary operator 
> 

是什麼summary(zorace)告訴你的列?我懷疑你已經意外地將某些東西轉換成了字符,或者它是從一個文件中以非數字字段的形式被讀入的,這些字段之後被過濾掉了。

奇怪的是,你的「數字」列對齊左側 - 我懷疑有一些空格填充到固定長度。

轉換回數字與:

zorace$se = as.numeric(as.character(zorace$se)) 

轉換爲字符首先保護您免受如果se是一個因素變量,在這種情況下,它會被轉換爲數字1到N

+0

布拉沃。將se轉換爲數字解決了問題。我猜想,我手動輸入了讓它出生的字符。非常感謝。 – Maggie

相關問題