我有 50 列和 150 行的数据矩阵。我想对数据集进行交叉验证。数据子集如下所示:
>dat<-matrix(c(7,8,5,6,4,5,6,6,1,9,8,5,14,11,15,14,21,24,25,26, 31,34,35,37), nrow=8, ncol=4)
>colnames(dat)<- c("ABC", "BCD", "CDE", "DEF")
>dat<-data.frame(dat)
首先,我想用 and 替换第一个值并NA
进行估算。为整个数据集的数组中的列中的每个值保存估算值并显示结果。MV
kNN
Rf
在这里我做了一些事情
library(VIM)
col <- names(dat)
das <-dat
for(name in col){
sp <- das[[name]]
sp<-data.frame(sp)
ps<-das[,-which(names(das) == name)]
sp<-cbind(sp,ps)
for(i in 1:length(sp[,1])){
d<-sp[,1]
p1<-sp[,2:NCOL(sp)]
d[i]<-NA
d<-data.frame(d)
d<-cbind(d,p1)
mnt_im<-kNN(d,variable="d", 3)
mnt_m[i]<-mnt_im[i,1]
d<-sp[,1]
}
#g<-assign(name, mnt_m)
mnt_m<-data.frame(mnt_m)
write.csv(mnt_m, "/home/Desktop/result.csv", append=TRUE)
}
运行上面的代码后,我收到很少的警告
Warning messages:
1: In write.csv(mnt_m, "/home/Desktop/result.csv", append = TRUE) :
attempt to set 'append' ignored
2: In write.csv(mnt_m, "/home/Desktop/result.csv", append = TRUE) :
attempt to set 'append' ignored
3: In write.csv(mnt_m, "/home/Desktop/result.csv", append = TRUE) :
attempt to set 'append' ignored
4: In write.csv(mnt_m, "/home/Desktop/result.csv", append = TRUE) :
attempt to set 'append' ignored
此外,它没有正确计算值,甚至没有附加到一个向量列中。我希望它单独用于单独的列。
我认为插补有一些错误。我必须为每个变量做同样的事情。我不知道到底发生了什么。你能查明我正在做的代码中的错误吗?也write.csv
没有正确附加。如何为整个数据集做到这一点?我是 R 的新手。如何从包()kNN
以及rfImpute
从包(randomForest
)中做到这一点?