5
votes

Trying out multiple models chapter of #r4ds and ran into an error message at the end:

Error: missing values and NaN's not allowed if 'na.rm' is FALSE In addition: Warning message: In ns(as.numeric(Month), 4) : NAs introduced by coercion

with

ADA_model<- function(ADA_mutiple_model){
   lm(ADA ~ ns(as.numeric(Month), 4), data=ADA_mutiple_model)
}

ADA_mutiple_model <- ADA_mutiple_model %>% 
     mutate(model=map(data,ADA_model)) 

as the code I used that creates the error.

See mod3 below to see what the function looks like

enter image description here

1
You can't use lm if there are NA in your data. Therefore, the error message is straightforward : add the option na.rm=TRUE in lm. I suggest you look at your data as well to understand what is wrong with your data. - jgadoury
@jgadoury I don't think lm has a na.rm argument. Could you mean the na.action argument? - aosmith
The argument is na.omit=TRUE, my mistake - jgadoury
Yeah what the hell am I talking about, it's na.action=na.omit. That's what happens when I try to sound smart without double-checking my stuff - jgadoury
That is the right argument, but the problem was on my function - user12081

1 Answers

3
votes

Your problem has nothing to do with the use of lm, but inside splines::ns when generating B-spline basis for natural cubic splines. Very likely your Month is a character variable, and you can not use as.numeric for coercing.


I just checked your attached figure. The x-axis in the plots verifies what I guessed. You need to use 1:12 for Month, not "JAN", "FEB", etc.