[R] curve() doesn't seem to use the whole range of x? And Error: longer object length is not a multiple of shorter object length

Matti Viljamaa mviljamaa at kapsi.fi
Sun Sep 25 15:01:29 CEST 2016

I’m trying to plot regression lines using curve()

The way I do it is:

bs <- coef(fit2)

and then for example:

curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x+bs["kouluB:clka"]*clka, from=min(lka), to=max(lka), add=TRUE, col='red')

This above code runs into error:

Error in curve(bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + bs["lka"] *  : 
  'expr' did not evaluate to an object of length 'n'
In addition: Warning message:
In bs["(Intercept)"] + bs["mies"] * 0 + bs["kouluB"] + bs["lka"] *  :
  longer object length is not a multiple of shorter object length

Which I’ve investigated might be related to the lengths of the different objects being multiplied or summed.
Taking length(g$x) or length(g$y) of

g <- curve(bs["(Intercept)"]+bs["mies"]*0+bs["kouluB"]+bs["lka"]*x, from=min(lka), to=max(lka), add=TRUE, col='red')

returns 101.

However length(lka) is 375. But perhaps these being different is not the problem?

I however do see that the whole range of lka is not plotted, for some reason. So how can I be sure
that it passes through all x-values in lka? And i.e. that the lengths of objects inside curve() are correct?

What can I do?

More information about the R-help mailing list