0

我有 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进行估算。为整个数据集的数组中的列中的每个值保存估算值并显示结果。MVkNNRf

在这里我做了一些事情

 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)中做到这一点?

4

0 回答 0