मुझे यकीन नहीं है कि यह एक बग है, लेकिन मैं 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

संपादन

  • विंडोज़ और लिनक्स पर स्टेटा 16.1 का उपयोग करना। वही मुद्दा।
1
Marcelo Avila 22 सितंबर 2020, 17:41

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा प्रतीत होता है कि r() परिणामों को साफ़ करने का एकमात्र तरीका rclass प्रोग्राम घोषित करना है। यह दोनों थोड़ा असंतोषजनक है, और, मेरा मानना ​​है, आपकी समस्या का समाधान जैसा कि आप चिंतित हैं कि r() आपके प्रोग्राम के परिणाम ताज़ा नहीं होंगे।

इस सांख्यिकीवादी चर्चा पर आधारित निम्नलिखित उदाहरण इस व्यवहार को प्रदर्शित करता है, और - यदि आप वास्तव में उदार बनना चाहते हैं - वास्तव में एक प्रोग्राम है जो r() परिणामों को साफ़ करता है।

program rclassclear , rclass
    return local rclassclear
end

sysuse auto , clear
quietly summarize mpg

rclassclear

return list

ध्यान दें कि दस्तावेज r() और return() के तहत "आर () में परिणाम संग्रहीत करना":

  • r() लौटाए गए परिणाम हैं और
  • return() जो परिणाम इकट्ठे किए जा रहे हैं, उन्हें वापस कर दिया जाएगा।

return clear return() को हटाता है r() को नहीं।

2
Nick Cox 24 सितंबर 2020, 15:15