我需要找到最佳权重(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.
答案 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.
如您所见,结果是正确的,因此您可以放心地忽略该警告。