Прошу прощения, возможно, решение в моей проблеме очень просто, но я все еще новичок в R, и любая помощь здесь оценена!В цикле я не могу суммировать результаты в матрице
Я хочу создать кадр данных или матрицу, в которой будет храниться выход каждого цикла. Вот программа:
n<-c(10,8,7,5)
n_goal<-c(8,9,9,4)
w<-c(0.1,0.1,0.1,0.1)
matrix<-mat.or.vec(6,4)
FI<-function(n_t) {
(((n_goal[1]-n[1]+W[1]-f[1]+n_t[1])^2)+((n_goal[2]-n[2]+W[2]-f[2]+n_t[2]-n_t[1])^2)+
((n_goal[3]-n[3]+W[3]-f[3]+n_t[3]-n_t[2])^2)+((n_goal[4]-n[4]+W[4]-f[4]-n_t[3])^2))
}
for (i in 1:6) {
W<-c(n*w)
sf<-c(1,1,1,1)
f1<-W%*%sf
f<-c(f1,0,0,0)
out<-nlm(FI, n_t<-c(0,0,0), hessian=TRUE)
for (i in 1:3) {
if(out$estimate[i]<0)
out$estimate[i]=0
}
n<-c(n-W+f-c(out$estimate,0)+c(0,out$estimate))
matrix[i, ]<-n
print(n)
}
matrix
n
является выходным я хочу хранить в матрице в каждом цикле, чтобы впоследствии сюжет.
(Каждый n
будет точка, и я хотел бы иметь 6 отдельно указывает --- шесть 4 размеры векторов)
Проблема здесь: Я получаю неправильно матрица:
> print(matrix)
[,1] [,2] [,3] [,4]
[1,] 0.000000 0 0.000000 0.000000
[2,] 0.000000 0 0.000000 0.000000
[3,] 8.000002 9 8.999999 3.999998
[4,] 0.000000 0 0.000000 0.000000
[5,] 0.000000 0 0.000000 0.000000
[6,] 0.000000 0 0.000000 0.000000
только третья строка имеет правильные номера, все остальные имеют ноль, а печать (п) кажется правильным
[1] 8.0 9.0 8.5 4.5
[1] 8.00 9.00 8.95 4.05
[1] 8.000003 9.000000 8.999999 3.999998
[1] 8.000002 9.000000 8.999999 3.999998
[1] 8.000002 9.000000 8.999999 3.999998
[1] 8.000002 9.000000 8.999999 3.999998
на самом деле я хочу, последняя матрица будет то же самое с печатью (п).
Кроме того, я попытался создать кадр данных, но мне это сложно, поскольку выходы - это векторы, а не одиночные числа.
Спасибо большое! Я надеюсь, что это сработает! – user3035550
ОК, пожалуйста, закройте Q, если это то, что вы хотите. –
к сожалению, он не работает. В любом случае, спасибо за ваш совет – user3035550