ggplot:geom_errorbar:“var”中的错误 - se:二元运算符的非数字参数

时间:2017-01-19 14:22:54

标签: r

如何处理错误“速率错误 - se:二进制运算符的非数字参数”?

我的代码:

package hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application
{

    public static void main(String[] args)
    {
        System.out.println("App Started");
        SpringApplication.run(Application.class, args);

    }

}

我的数据:

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

任何提示都表示赞赏。

1 个答案:

答案 0 :(得分: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

BUT:

> 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.