不建议使用数组向量算法中长度为1的回收数组。平方误差的优化总和

时间:2019-04-27 19:21:00

标签: r

我需要找到最佳权重(a)以最小化平方误差之和。我以这个为例,因为我要处理一个更复杂的问题,该问题需要使用lm之外的其他优化程序包。我收到警告(),说:“在y中。不建议在数组向量算术中回收长度为1的数组。请改用c()或as.vector()。”我尝试了as.vector(a * y),a [1] * y,a * as.vector(y),但没有任何效果。

我应该怎么做才能摆脱此消息?

install.packages("NlcOptim")
library(NlcOptim)

x <- c(1:4)
y <- c(2,4,6,8)

objfun <- function(a) {
  return(sum((x-a*y)^2))
}
x0 <- 1
solnl(x0,objfun = objfun)

这是我输入warnings()后看到的错误消息:

1: In a * y :
  Recycling array of length 1 in array-vector arithmetic is deprecated.
  Use c() or as.vector() instead.

1 个答案:

答案 0 :(得分:0)

实际上,我建议对此不采取任何措施。 R根本不喜欢在数字向量上添加一维数组。

x <- array(1, dim = 1);
x + c(1,1)

[1] 2 2

Warning message:
In x + c(1, 1) :
  Recycling array of length 1 in array-vector arithmetic is deprecated.
  Use c() or as.vector() instead.

如您所见,结果是正确的,因此您可以放心地忽略该警告。