【问题标题】:R - “ missing value where TRUE/FALSE needed ”R - “需要 TRUE/FALSE 的缺失值”
【发布时间】:2015-05-12 20:12:19
【问题描述】:

我正在尝试在 R 中执行以下代码

library(nloptr)

m = 0.00060981
m2 = 0.000109362
m4 = 5.21538E-08
m6 = 4.25E-11
f=function(X){  
  Y = matrix(NA, ncol = 1, nrow = 4)
  mu = X[1]
  S2=X[2]
  S2u = X[3]
  lambda= X[4]
  Y[1] = (mu-(S2/2))-m
  Y[2] = (S2+(lambda*S2u))-m2
  Y[3] = ((3*(S2^2) + 6*(lambda^2)*(S2u^2)+3*(S2u^2)*(lambda) + 6*(lambda)*(S2u)*S2))-m4
  Y[4] = (15*(S2^3) +45*(S2^2)*S2u + 45*(lambda^2)*(S2u^2)*S2 +45*(lambda)*(S2u^2)*S2 +15*(lambda^3)*(S2u^3)+45*(lambda^2)*(S2u^3)+15*lambda*(S2u^3))-m6
  return(Y) 
}
g = function(X){
  return(norm(f(X),'f'))
}
initiale=c( 0.00197,0.022,0.0036,0.8999)
hin = function(X){
h=rep(NA,1)
h[2]>0
h[3]>0
h[1]<h[2]

h
}
ans=auglag(par=initiale,fn=g,hin=hin)

但是我收到了这个错误:

Error in if (sig > 1e+05) control.optim$reltol <- 1e-10 : 
  missing value where TRUE/FALSE needed

为什么会出现此错误,以及如何修复代码?

【问题讨论】:

  • 你在那里的代码没有你提到的sig&gt;1e+05这行...你能发布完整的代码吗?
  • 这是我没有使用参数sig的完整代码!
  • 您可能希望在代码中包含所需的library(nloptr),如果事实上这是auglag() 函数的来源,尽管它记录的参数似乎与您的调用不匹配'重新制作?
  • auglag 来自哪里? hin 函数的目的是什么,它从不使用它的 X 参数并且只是为了它自己的缘故进行一些比较?请注意,它总是返回NA,我怀疑这可能与您的问题有关。
  • @csgillespie 是对的。你想让hin函数做什么?目前,它正在创建单个 NA 值。

标签: r


【解决方案1】:

我怀疑错误消息是 h 函数的结果

hin = function(X){
       h=rep(NA,1)
       h[2]>0
       h[3]>0
       h[1]<h[2]
       h
 }

h 的值是always NA 并且永远不会改变。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-17
    • 2016-11-06
    • 2015-06-28
    • 1970-01-01
    • 2019-03-07
    • 2018-07-12
    • 2014-06-06
    • 1970-01-01
    相关资源
    最近更新 更多