Я делаю некоторые изменения в примере algoritm. В последнем примере пропущена некоторая информация. Я объясняю более подробно. Возможно, есть некоторые основные проблемы, но я не очень хорошо знаком с циклами.Сохранение рекурсивных результатов в r
Начальные значения
x<-matrix(c(1,1,1,1,
-1,-1,1,1,
-1,1,-1,1), nrow = 4)
w<-matrix(rep(0,15), nrow = 5)
d<-c(-1,1,1,1)
Переменные
v <- 10L
y <- 10L
e <- 10L
des <- 10L
m <- 0.5
Идея данного цикла является, чтобы найти значения ш для каждой строки х до тех пор, г = я. Более ясно, если вы видите цикл.
Этот цикл работает хорошо, но только для первых 5 рядов. Он должен зацикливаться на x до тех пор, пока не будет выполнено условие (d = i). Я знаю, что это не правильный способ. Это просто пример того, что я хочу делать. Другие варианты (применяются) приветствуются.
Loop
for(i in 1:4) {
# Multiplies every row of x by w. The w comes from the result of the loop.
v[i]<- t(w[i,]) %*% x[i,]
# Takes the sign of v.
y[i] <- if(v[i] >= 0) 1 else -1
# Value to use in the last line of the loop.
e[i] <- d[i]-y[i]
des[i] <- if(d[i] == y[i]) 1 else 0 #check if condition is satisfied
w[i+1,] <- w[i,]+(m*e[i]*x[i,])
}
Желаемая выход
w <- matrix(c(0,-1,0,1,1,1,1,
0,1,0,1,1,1,1,
0,1,2,1,1,1,1), nrow=7)
Код не воспроизводится и выдает ошибку 'Error in des [i] <- if (d [i] == y [i]) 1 else 0: object 'des' not found'. Предоставьте воспроизводимый код. –
Я бы включил ваш цикл в функцию, чтобы вы передали w в качестве параметра. Затем вы можете вернуть все, что захотите, в результате вызова этой функции, включая новый w - без перезаписи оригинала w. Я не понимаю, что вам нужно. – Joy
@Alfredo_MF, что такое 'd'? –