You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言代码运行报错attempt to apply non-function,请求问题排查

问题分析与解决
  • 直接报错原因:代码最后一项(lambda-1)(sum(log(y)))存在语法错误。在R中,乘法必须显式使用*运算符,这里R会误将lambda-1当作函数去调用后面的sum(log(y)),因此触发"attempt to apply non-function"错误。

  • 修正后的代码:

loglik <- function(y, theta) {
  mu <- theta[1]
  sigma2 <- theta[2]
  lambda <- theta[3]
  n <- length(y)
  -0.5*n*log(2*pi) - 0.5*n*log(sigma2) - sum( ((y^lambda - 1)/lambda - mu)^2 )/(2*sigma2) + (lambda - 1)*sum(log(y))
}

补充说明:除了补全乘法符号*,代码中还调整了sum的括号位置。原代码是sum(...)^2(先求和再平方),如果你的模型要求的是残差平方和(即每个残差先平方再求和),sum( ((y^lambda - 1)/lambda - mu)^2 )才是正确的写法,这也是多数对数似然计算的标准逻辑,你可以结合自己的模型公式确认这一点。

内容的提问来源于stack exchange,提问作者user367987

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 19:45:34