如何仅从stata 16.1中清除r中的存储结果 用于复制

问题描述

我不确定这是一个错误,但是我无法从使用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()

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...