我不确定这是一个错误,但我无法从用return clear
存储的结果r((中清除结果。ereturn clear
用于清除e((中存储的结果。results clear
也起作用,但它清除所有结果。
有没有办法只清除r((中存储的结果?
原因是,根据某些条件,我对不同的变量运行相同的程序。清除结果将确保返回的结果总是"0";新鲜的";而不是以前运行的程序的结果。。。
用于复制
clear
sysuse auto
qui reg mpg rep78, r
* works
ereturn list
ereturn clear
ereturn list
* does not work
return list
return clear
return list // still there!
* workaround
qui reg mpg rep78, r
clear results
return list
ereturn list
编辑
- 在windows和linux上使用stata 16.1。同样的问题
清除r()
结果的唯一方法似乎是声明一个rclass
程序。这两者都有点不令人满意,而且,我相信,由于您担心您的程序产生的r()
结果不会是新的,因此您的问题的解决方案也是不令人满意的。
基于Statalist的讨论,下面的例子演示了这种行为,并且——如果你想真正慷慨的话——实际上是一个清除r()
结果的程序。
program rclassclear , rclass
return local rclassclear
end
sysuse auto , clear
quietly summarize mpg
rclassclear
return list
注意,文档在"将结果存储在r((中"下指出了r()
和return()
之间的区别:
r()
是返回的结果- CCD_ 11是将要返回的结果
return clear
清除return()
而不是r()
。