我一直收到以下错误:
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级别“”,“
答案 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
选项,因为默认情况下会使用级别。)