na.fail.default 中的错误:对象中缺少值 - 但没有缺少值
Error in na.fail.default: missing values in object - but no missing values
我正在尝试 运行 使用这些数据的 lme 模型:
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))
我得到这个错误代码:
Error in na.fail.default(list(cor_partner = c(1L, 1L, 2L, 1L, 1L, 1L, :
missing values in object
我知道论坛里有类似的问题。但是,就我而言:
- cor_partner没有缺失值;
- 整个对象被编码为一个因素(至少从全球环境显示的内容来看)。
我可以用 na.action 排除那些 NA 值,但我更想知道为什么函数正在读取缺失值 - 以准确了解我的数据发生了什么。
tl;dr 您必须一次对整个数据框使用 na.exclude()
(或其他),以便剩余的观察结果在变量之间保持匹配。 ..
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) ...
现在试试:
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)
我们收到收敛错误和警告,但我认为现在是因为我们使用的是一个很小的虚构数据集,其中没有足够的信息,而不是因为代码存在任何固有问题。
randomForest
包有一个 na.roughfix
函数,“ 通过 median/mode 估算缺失值”
您可以如下使用
fit_rf<-randomForest(store~.,
data=store_train,
importance=TRUE,
prOximity=TRUE,
na.action=na.roughfix)
如果您的数据包含 Na 或缺失值,您可以使用它
它将传递与数据集中完全相同的数据。
rf<-randomForest(target~.,data=train,
na.action = na.roughfix)
另一种可能的解决方案是使用 data <- na.omit(train)
,这样您就可以轻松传递数据。
我正在尝试 运行 使用这些数据的 lme 模型:
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))
我得到这个错误代码:
Error in na.fail.default(list(cor_partner = c(1L, 1L, 2L, 1L, 1L, 1L, : missing values in object
我知道论坛里有类似的问题。但是,就我而言:
- cor_partner没有缺失值;
- 整个对象被编码为一个因素(至少从全球环境显示的内容来看)。
我可以用 na.action 排除那些 NA 值,但我更想知道为什么函数正在读取缺失值 - 以准确了解我的数据发生了什么。
tl;dr 您必须一次对整个数据框使用 na.exclude()
(或其他),以便剩余的观察结果在变量之间保持匹配。 ..
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) ...
现在试试:
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)
我们收到收敛错误和警告,但我认为现在是因为我们使用的是一个很小的虚构数据集,其中没有足够的信息,而不是因为代码存在任何固有问题。
randomForest
包有一个 na.roughfix
函数,“ 通过 median/mode 估算缺失值”
您可以如下使用
fit_rf<-randomForest(store~.,
data=store_train,
importance=TRUE,
prOximity=TRUE,
na.action=na.roughfix)
如果您的数据包含 Na 或缺失值,您可以使用它 它将传递与数据集中完全相同的数据。
rf<-randomForest(target~.,data=train,
na.action = na.roughfix)
另一种可能的解决方案是使用 data <- na.omit(train)
,这样您就可以轻松传递数据。