0

我正在尝试完成 Analytics 课程的家庭作业。我们使用 kknn(K 最近邻)函数进行分类。无论如何,for循环似乎并没有像我想要的那样遍历 i 值:

我首先尝试初始化一个列表并尝试使用双括号表示法附加它,但我注意到,在我的全局环境中,该列表只有一个项目。我尝试使用 $ 表示法来附加列表,结果相同。然后,我尝试启动一个数据框并使用 rbind 在 for 循环的每次迭代中扩展该框架,希望它能起到作用。它仍然只给我数据框中的一项。

klist = list()

for(i in 1:654)
  {CCmodel_knn <- kknn(V11~V1+V2+V3+V4+V5+V6+V7+V8+V9+V10, CCdata[-i,],CCdata[i,],k=10,distance = 2,kernel ="optimal",scale = TRUE)

fittedValues <- fitted.values(CCmodel_knn)

klist$fittedValues <- i}

我试过了klist[[fittedValues]] <- i

这是我用于数据框的代码:

kframe <- data.frame(ivalue = i, FV = fittedValues)

for(i in 1:654)
  {CCmodel_knn <- kknn(V11~V1+V2+V3+V4+V5+V6+V7+V8+V9+V10, CCdata[-i,],CCdata[i,],k=10,distance = 2,kernel ="optimal",scale = TRUE)

fittedValues <- fitted.values(CCmodel_knn)

rbind(kframe, i, fittedValues)}

关于如何将 for 循环添加到我的列表中的任何建议?如您所见,我的范围是 i 在 1:654,所以我期待 654 行数据帧/列表。

4

1 回答 1

0

您的循环每次都写入同一个变量。您需要将其附加到列表中,然后在最后处理整个列表。

尝试这个:

klist = list()

for(i in 1:654) 
{
  CCmodel_knn <- kknn(V11 ~ V1 + V2 + V3 + V4 + V5 + V6 + V7 + V8 + V9 + V10, 
                      CCdata[-i,], CCdata[i,], k = 10, distance = 2, 
                      kernel = "optimal", scale = TRUE)

  klist[[i]] <- fitted.values(CCmodel_knn)
}

kframe <- do.call("rbind", klist)

然后你可能需要做

kframe <- as.data.frame(kframe)
于 2020-01-15T09:41:40.730 回答