geom_errorbar 中二进制的非数字参数

non-numeric argument to binary in geom_errorbar

我正在尝试向直方图添加误差条(仅在某些条中),但我遇到了问题,无法解决这个问题。这是我的数据集的示例:

      dput(subdat)
      structure(list(mod = c("MME_RCP85", "MME_piControl", "MME_RCP85", 
      "MME_piControl", "MME_RCP85", "MME_piControl", "MME_RCP85",   "MME_piControl", 
      "MME_RCP85", "MME_piControl", "MME_RCP85", "MME_piControl", "MME_RCP85", 
       "MME_piControl", "MME_RCP85", "MME_piControl", "MME_RCP85", "MME_piControl", 
      "MME_RCP85", "MME_piControl", "MME_RCP85", "MME_piControl"), 
      id = c(4L, 5L, 4L, 5L, 4L, 5L, 4L, 5L, 4L, 5L, 4L, 5L, 4L, 
      5L, 4L, 5L, 4L, 5L, 4L, 5L, 4L, 5L), variable = structure(c(1L, 
      1L, 2L, 2L, 3L, 3L, 4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L, 8L, 8L, 
      9L, 9L, 10L, 10L, 11L, 11L), .Label = c("A", "C", "E", "N", 
     "NE", "NW", "S", "SE", "SW", "U", "W"), class = "factor"), 
      value = c(23.3739104936128, 20.1308610498121, 18.8255024990622, 
      19.0964172156593, 5.77035863185792, 5.55522907864065, 7.7881775809746, 
      6.79307018295126, 4.32731156887715, 3.81988029851766, 7.39932393157495, 
      6.53369517479574, 7.22600735346051, 7.25113200310887, 3.09683685988686, 
      3.20062134399185, 5.97626752214253, 5.53675529950584, 5.86005136849718, 
      4.81357821706405, 10.3562524093597, 9.26876021032058), std = list(
      0, 1.1044752690746, 0, 0.985464166294808, 0, 1.28014680316859, 
      0, 1.26851693389212, 0, 1.31353120434552, 0, 1.04172687591445, 
      0, 2.37424970962826, 0, 1.27746257356022, 0, 2.46069388335777, 
      0, 1.31748174778294, 0, 1.64599561125564)), .Names = c("mod", 
      "id", "variable", "value", "std"), row.names = c(4L, 5L, 9L, 
      10L, 14L, 15L, 19L, 20L, 24L, 25L, 29L, 30L, 34L, 35L, 39L, 40L, 
      44L, 45L, 49L, 50L, 54L, 55L), class = "data.frame")

我正在做的情节是:

p  <- ggplot(subdat,aes(variable,value,fill=mod))  
p +geom_bar(stat="identity",position='dodge')
p +    geom_errorbar(aes(ymin=value-std, ymax=value+std), width=.2,
                       position=position_dodge(.9))

我遇到错误:

Error in value - std : non-numeric argument to binary operator

我不知道如何解决这个问题。

您需要更改 std 的 class:

subdat$sd = as.numeric(subdat$std)

p  <- ggplot(subdat,aes(variable,value,fill=mod))  
p <- p + geom_bar(stat="identity",position='dodge')
p + geom_errorbar(aes(ymin = value - sd, ymax = value + sd), width = 0.2, position = position_dodge(0.9))