Для цикла для функции не добавляется список/кадр данных

Я пытаюсь выполнить домашнее задание для класса в 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 строк.


person Deemy    schedule 15.01.2020    source источник
comment
Прочтите Как форматировать блоки кода? и отредактируйте ваш вопрос.   -  person jay.sf    schedule 15.01.2020


Ответы (1)


Ваш цикл каждый раз пишет в одну и ту же переменную. Вам нужно добавить его в список, а затем обработать весь список в конце.

Попробуй это:

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)
person Allan Cameron    schedule 15.01.2020