如何在 c() 函数中重复元素?

How to repeat elements in c() function?

我正在使用组合函数 c() 来定义 gradient:

eval_f <- function( x, param, n ) { 
return(list("objective" = x[5] * (param[1] - param[2] / sum(x[1:4])),
             "gradient" =     c( x[5] * param[2] / (x[1] * x[1]), 
                                 x[5] * param[2] / (x[2] * x[2]), 
                                 x[5] * param[2] / (x[3] * x[3]), 
                                 x[5] * param[2] / (x[4] * x[4]),
                                    param[1] - param[2] / sum(x[1:4])  
                           ) ) )
}

可以看到渐变包含具有相同结构的元素:x[5] * param[2] / (x[...] * x[...])

问题。是否可以使用标准函数(如rep(c(...), times=n))创建gradient

你可以这样做:

eval_f <- function( x, param, n ) { 
  return(list(objective = x[5] * (param[1] - param[2] / sum(x[1:4])),
              gradient =  c(x[5] * param[2] / (x[1:4]^2), 
                               param[1] - param[2] / sum(x[1:4])  
          )))
}

或者也可以使用 (x[1:4] * x[1:4]),如果您喜欢 (x[1:4] * x[1:4]) 而不是 (x[1:4]^2)