如何仅在 stata 16.1 中清除 r() 中的存储结果
how to clear stored results from r() only in stata 16.1
我不确定这是一个错误,但我无法从使用 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()
.
我不确定这是一个错误,但我无法从使用 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()
.