问题描述
我不确定这是一个错误,但是我无法从使用return clear
存储的r()中清除结果。 ereturn clear
用于清除e()中存储的结果。 results clear
也可以使用,但是会清除所有结果。
有什么方法可以只清除r()中存储的结果吗?
原因是我根据某些条件针对不同的变量运行同一程序。清除结果将确保返回的结果始终“新鲜”,而不是先前运行的程序的结果...
用于复制
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()
结果不会新鲜,因此可以解决您的问题。
基于this Statalist discussion的以下示例演示了此行为,并且-如果您想变得非常慷慨-实际上是清除r()
结果的程序。
program rclassclear,rclass
return local rclassclear
end
sysuse auto,clear
quietly summarize mpg
rclassclear
return list
请注意,documentation在“将结果存储到r()”中指出了r()
和return()
之间的区别:
-
r()
是返回的结果, -
return()
是要返回的结果。
return clear
清除return()
而不是r()
。