R中Boxplot的“轴误差”

时间:2013-10-28 00:58:20

标签: r boxplot

我一直收到以下错误:

Error in axis(side = 1, at = 1:3, labels = c("ADDA", "DM")) : 
  'at' and 'labels' lengths differ, 3 != 2

运行时

boxplot(ELISA_Mussel$conc2~ELISA_Mussel$ELISA,main="ELISA",
    names=c("ADDA","DM"),
    ylab=expression(paste(mu,"g/L")))

虽然我只有2个标签。为什么说我有3个?数据(ELISA_Mussel)如下所示:

ELISA   conc2
ADDA    20
ADDA    11.5
ADDA    18.5
ADDA    16.5
ADDA    17.6
ADDA    20
ADDA    11.5
ADDA    20
ADDA    14.5
ADDA    20
ADDA    8.5
ADDA    10.5
DM  6
DM  3.9
DM  4.3
DM  4.6
DM  5
DM  3.6
DM  6.2
DM  7
DM  3.8
DM  3.2
DM  5.4
DM  6.8
ADDA    8.6
ADDA    6.9
ADDA    3.9
ADDA    2.2
ADDA    7.4
ADDA    3.7
ADDA    4.5
ADDA    13.2
ADDA    8.6
ADDA    9.2
DM  1.6
DM  0.01
DM  0.01
DM  0.01
DM  0.01
DM  0.01
DM  0.01
DM  0.01
DM  1.6
DM  1.5

str(ELISA_Mussel)

'data.frame':64 obs。 15个变量:

$ ELISA:因子w / 3水平“”,“ADDA”,“DM”:2 2 2 2 2 2 2 2 2 2 ...  $海鲜:因子w / 2级“”,“贻贝”:2 2 2 2 2 2 2 2 2 2 ...  $ Method:Factor w / 3 levels“”,“LongMeOH”,..:2 2 2 2 2 2 2 2 2 2 ...  $ conc:因子w / 32级别“”,“

1 个答案:

答案 0 :(得分:1)

您必须拥有三个级别的因子,尽管只使用了两个级别。你可以这样做:

is.factor(ELISA_Mussel$ELISA)
# TRUE
nlevels(ELISA_Mussel$ELISA)
# [1] 3

您可以通过删除未使用的级别来解决此问题:

ELISA_Mussel$ELISA <- droplevels(ELISA_Mussel$ELISA)

然后它应该很好。

事实上,如果您在droplevels公式中使用boxplot,则甚至无需修改数据:

boxplot(ELISA_Mussel$conc2 ~ droplevels(ELISA_Mussel$ELISA),
        main="ELISA", ylab=expression(paste(mu,"g/L")))

(另请注意,您可以单独保留names选项,因为默认情况下会使用级别。)