2

我不断收到以下错误:

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 ... $ Seafood : 因子 w/ 2 个水平 "","Mussel": 2 2 2 2 2 2 2 2 2 2 ... $ 方法:因子 w/3 个水平“”,“LongMeOH”,..:2 2 2 2 2 2 2 2 2 2 ... $ conc :因子 w/32 个水平“ ","

4

1 回答 1

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单独保留该选项,因为默认使用级别。)

于 2013-10-28T01:17:17.333 回答