Невозможно добавить числа с указанным индексом c к двойному в R - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу создать 10 b1 для каждого значения x1 и x2 в списках xp и yp, оптимизируя формулу res ниже. Однако мои значения как-то не добавляются в b1.created. Я получаю b1.created = 0 при проверке после запуска кода. Как я могу заставить код работать?

y <- matrix(c(1,2,3,4,2,6,7,8,9,10),ncol = 1)
x1 <- matrix(c(2,4,6,5,10,12,14,16,18,20),ncol =1)
x2 <- matrix(c(1,4,9,16,25,25,48,64,81,99),ncol = 1)
x <- cbind(x1,x2)
created.b1 = 0
normal <- function(b0,y,xp,yp,x1,x2){for (i in xp){
  res <- sum((y- (b0 + x1[i]*xp[i] + x2[i]*yp[i]))^2)
  optobj <- optimize(normal,c(-10,10),y =y ,xp = xp,yp =yp, x1 = x1,x2 = x2)
  created.b1[i] = obtobj$minimum[i]
}
}

1 Ответ

1 голос
/ 22 апреля 2020

Я думаю, что это то, что вы хотите, но, пожалуйста, перепроверьте.

created.b1 <- numeric(length = 10)
for (i in 1:10)
{
    opt_obj <- optimise(f = function(b0, y, xp, yp, x1, x2) sum((y - (b0 + (x1 * xp) + (x2 * yp))) ^ 2),
                        interval = c(-10, 10),
                        y = y,
                        xp = xp[i],
                        yp = yp[i],
                        x1 = x1,
                        x2 = x2)
    created.b1[i] <- opt_obj$minimum
}
created.b1
...