【发布时间】:2017-06-25 11:57:25
【问题描述】:
我正在使用 Stata 14 SE。我有相当长的脚本,它利用嵌套循环来生成一些蒙特卡洛数据。在某些时候,一个循环可能会失败,然后我想让它把一些结果写入一个 txt 文件,这样我就知道它在什么时候失败了。
为此,我使用以下代码。这部分位于一个函数的多个循环中,该函数在其他几个循环中被调用。
if(f_iterations == f_it_max - 1) {
stata(`" display "Price Iteration Failed" "')
st_local("filenumber_ll",filenumber)
st_local("j_ll",strofreal(j))
st_local("filenumber_ll")
st_local("j_ll")
stata(`" display "Filenumber=`filenumber_ll'" "')
stata(`" display "J=`j_ll'" "')
stata(`" file write myfile4 `" Failure in file `filenumber_ll', market `j_ll' "' _n "')
}
它在Stata中返回以下输出:
Price Iteration Failed
001
2
Filenumber=
J=
如您所见,Stata 看到“filenumber_ll”和“j_ll”的值,但拒绝显示并写入文件。
顺便说一句,我也在独立代码中尝试了这些命令:
mata
j=5
filenumber="filenumber"
filenumber
st_local("j_ll",strofreal(j))
st_local("filenumber_ll",filenumber)
stata(`" display "Filenumber=`filenumber_ll'" "')
stata(`" display "J=`j_ll'" "')
stata(`" file open myfile25 using `"!test.txt"', write replace "')
stata(`" file write myfile25 `"Failure in file `filenumber_ll', market `j_ll'"' _n "')
stata(`" file close myfile25 "')
end
然后我收到这个输出:
filenumber
Filenumber=filenumber
J=5
所以它似乎有效。
我不明白为什么它可以在独立文件中工作,而不是在循环中。有什么帮助吗?
【问题讨论】:
标签: stata