2
votes

I keep getting the following error:

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

when running

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

although I only have 2 labels. Why does it say that I have 3? The data (ELISA_Mussel) looks like this:

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. of 15 variables:

$ ELISA : Factor w/ 3 levels "","ADDA","DM": 2 2 2 2 2 2 2 2 2 2 ... $ Seafood : Factor w/ 2 levels "","Mussel": 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 : Factor w/ 32 levels "","

1
So your data is not too big, please paste the output of dput(ELISA_Mussel[c("ELISA", "conc2")]).flodel

1 Answers

1
votes

You must have a factor with three levels, although only two are used. You can check by doing:

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

You can fix that by dropping unused levels:

ELISA_Mussel$ELISA <- droplevels(ELISA_Mussel$ELISA)

Then it should plot fine.

In fact, you don't even have to modify your data if you use droplevels in the boxplot formula:

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

(Also note that you can leave the names option alone since levels are used by default.)