我有一个条件表达式,当函数的结果满足(== 7)时(VitPath $状态)意味着当其条件(<0.1)也满足时其他嵌入式条件表达式的总和导致G
G<-if(tail(VitPath$states,1)==7)
{if(summary(ResFit)$coef[370]<0.1) summary(ResFit)$coef[64]*summary(ResFit)$coef[91]
else 0 +
if(summary(ResFit)$coef[371]<0.1) summary(ResFit)$coef[65]*summary(ResFit)$coef[93]
else 0 +
if(summary(ResFit)$coef[372]<0.1) summary(ResFit)$coef[66]*summary(ResFit)$coef[95]
else 0 +
if(summary(ResFit)$coef[373]<0.1) summary(ResFit)$coef[67]*summary(ResFit)$coef[97]
else 0 +
if(summary(ResFit)$coef[374]<0.1) summary(ResFit)$coef[68]*summary(ResFit)$coef[99]
else 0 +
if(summary(ResFit)$coef[375]<0.1) summary(ResFit)$coef[69]*summary(ResFit)$coef[101]
else 0 +
if(summary(ResFit)$coef[376]<0.1) summary(ResFit)$coef[70]*summary(ResFit)$coef[103]
else 0 +
if(summary(ResFit)$coef[377]<0.1) summary(ResFit)$coef[71]*summary(ResFit)$coef[105]
else 0 +
if(summary(ResFit)$coef[378]<0.1) summary(ResFit)$coef[72]*summary(ResFit)$coef[107]
else 0} else 0
似乎嵌入的条件表达式没有被正确地表达,因为它在第一个嵌入式表达式中产生错误,因为它似乎不理解乘法。
Computing the asymptotic covariance matrix of estimates
Error en if (summary(ResFit)$coef[370] < 0.1) summary(ResFit)$coef[64] * :
valor ausente donde TRUE/FALSE es necesario
有没有办法在不改变现有格式的情况下执行此操作。当我放置括号或括号(摘要(ResFit)$ coef [71] *摘要(ResFit)$ coef [105])时,它也不起作用。
非常感谢
EDITED
ResFit由以下表达式X生成,其中包含数值向量
ResFit = HMMFit(X, nStates=9, control=list(init="KMEANS"))
答案 0 :(得分:1)
试试这个。这是一个布尔代数版本;当测试失败时,结果将为0但是当它成功时它将是产品。我假设你只想要汇总coef矩阵的第一列,因为乘以标准误差没有多大意义:
G<-if(tail(VitPath$states,1)==7) { summary(ResFit)$coef[370:378,1]<0.1 )*
( summary(ResFit)$coef[64:72,1])*(summary(ResFit)$coef[91:107,1]) }
这应该更快,更清晰,更容易维护。如果您使用的是不同于lm
的建模函数,则应发布更多详细信息。我假设从$coef
返回的结构 - 调用就像:
系数
一个p×4矩阵,其中包含估计系数,标准误差,t-统计量和相应(双侧)p值的列。别名系数被省略。