问题
I am trying to run a lme model with these data:
tot_nochc=runif(10,1,15)
cor_partner=factor(c(1,1,0,1,0,0,0,0,1,0))
age=runif(10,18,75)
agecu=age^3
day=factor(c(1,2,2,3,3,NA,NA,4,4,4))
dt=as.data.frame(cbind(tot_nochc,cor_partner,agecu,day))
attach(dt)
corpart.lme.1=lme(tot_nochc~cor_partner+agecu+cor_partner *agecu,
random = ~cor_partner+agecu+cor_partner *agecu |day,
na.exclude(day))
I get this error code:
Error in na.fail.default(list(cor_partner = c(1L, 1L, 2L, 1L, 1L, 1L, : missing values in object
I am aware there are similar questions in the forum. However, in my case:
- cor_partner has no missing values;
- the whole object is coded as a factor (at least from what the Global Environment shows).
I could exclude those NA values with an na.action, but I'd rather know why the function is reading missing values - to understand exactly what is happening to my data.
回答1:
tl;dr you have to use na.exclude()
(or whatever) on the whole data frame at once, so that the remaining observations stay matched up across variables ...
set.seed(101)
tot_nochc=runif(10,1,15)
cor_partner=factor(c(1,1,0,1,0,0,0,0,1,0))
age=runif(10,18,75)
agecu=age^3
day=factor(c(1,2,2,3,3,NA,NA,4,4,4))
## use data.frame() -- *DON'T* cbind() first
dt=data.frame(tot_nochc,cor_partner,agecu,day)
## DON'T attach(dt) ...
Now try:
library(nlme)
corpart.lme.1=lme(tot_nochc~cor_partner+agecu+cor_partner *agecu,
random = ~cor_partner+agecu+cor_partner *agecu |day,
data=dt,
na.action=na.exclude)
We get convergence errors and warnings, but I think that's now because we're using a tiny made-up data set without enough information in it and not because of any inherent problem with the code.
回答2:
randomForest
package has a na.roughfix
function that "imputes Missing Values by median/mode"
You can use it as follows
fit_rf<-randomForest(store~.,
data=store_train,
importance=TRUE,
prOximity=TRUE,
na.action=na.roughfix)
回答3:
if your data contain Na or missing values you can use this it will pass the data exactly the same as it is in datasets.
rf<-randomForest(target~.,data=train,
na.action = na.roughfix)
来源:https://stackoverflow.com/questions/38250440/error-in-na-fail-default-missing-values-in-object-but-no-missing-values