使用与内置Stata命令相同的名称编写用户命令

使用与内置Stata命令相同的名称编写用户命令,stata,Stata,我想重新定义Stata中的内置命令。例如,假设我想在summary命令后添加缺失值的数量。当我为名为summary的程序创建ADO文件时,Stata会自动使用内置程序,而不是用户编写的程序。有没有办法改变这种行为?对于像summary这样的关键命令,答案是根本不考虑这样做。即使您发现一个名称相同的ado文件,并将其替换为您自己的行为不同的ado文件,也有可能会破坏Stata,使您自己的某个文件工作起来不可预测,并且出现更多错误摘要,不管您是否知道,都会被许多其他程序调用 除了重新安装的建议外,你

我想重新定义Stata中的内置命令。例如,假设我想在
summary
命令后添加缺失值的数量。当我为名为
summary
程序创建ADO文件时,Stata会自动使用内置程序,而不是用户编写的程序。有没有办法改变这种行为?

对于像
summary
这样的关键命令,答案是根本不考虑这样做。即使您发现一个名称相同的ado文件,并将其替换为您自己的行为不同的ado文件,也有可能会破坏Stata,使您自己的某个文件工作起来不可预测,并且出现更多错误<代码>摘要
,不管您是否知道,都会被许多其他程序调用

除了重新安装的建议外,你不会从任何人那里得到太多的支持来解决你的问题

事实上,我不会试图覆盖StataCorp写的任何东西

相比之下,编写自己的程序添加一些额外的内容是一个非常好的主意


如果有人对所有代码都可见的其他软件进行了不利的比较,那么细节是不同的,但原理基本相同。例如,如果你不完全理解你在做什么,那么想改变R的最深层部分是非常鲁莽的

对于像
summary
这样的关键命令,答案是根本不考虑这样做。即使您发现一个名称相同的ado文件,并将其替换为您自己的行为不同的ado文件,也有可能会破坏Stata,使您自己的某个文件工作起来不可预测,并且出现更多错误<代码>摘要,不管您是否知道,都会被许多其他程序调用

除了重新安装的建议外,你不会从任何人那里得到太多的支持来解决你的问题

事实上,我不会试图覆盖StataCorp写的任何东西

相比之下,编写自己的程序添加一些额外的内容是一个非常好的主意


如果有人对所有代码都可见的其他软件进行了不利的比较,那么细节是不同的,但原理基本相同。例如,如果你不完全理解你在做什么,那么想改变R的最深层部分是非常鲁莽的

这似乎是个糟糕的主意。“为什么不为总结写一个叫做“其他东西”的包装呢?”迪米特里·V·马斯托夫(Dimitry V.Masterov)简明扼要地说出了我花了10分钟写的东西。我希望有人会这样回答。但是,我不认为返回一个标量有什么害处(例如,添加要汇总的缺失观察数),特别是如果它采用了summary varlist、missing等补充选项的形式。这迫使我记住新的名字,并使我的代码基本上不可与其他人共享。如果你的代码依赖于额外的标量,那么代码无论如何都是不可共享的(除非你还提供了你的程序)。更糟糕的是,对于新手来说,很难诊断代码为什么没有运行。如果程序有不同的名称(比如Summarie2),(s),他会很快发现该程序缺失,并询问您在哪里找到该程序,问题就解决了。您还可以在共享的do文件中定义summarie2.ado,这使得它非常可移植。这似乎是一个糟糕的主意。“为什么不为总结写一个叫做“其他东西”的包装呢?”迪米特里·V·马斯托夫(Dimitry V.Masterov)简明扼要地说出了我花了10分钟写的东西。我希望有人会这样回答。但是,我不认为返回一个标量有什么害处(例如,添加要汇总的缺失观察数),特别是如果它采用了summary varlist、missing等补充选项的形式。这迫使我记住新的名字,并使我的代码基本上不可与其他人共享。如果你的代码依赖于额外的标量,那么代码无论如何都是不可共享的(除非你还提供了你的程序)。更糟糕的是,对于新手来说,很难诊断代码为什么没有运行。如果程序有不同的名称(比如Summarie2),(s),他会很快发现该程序缺失,并询问您在哪里找到该程序,问题就解决了。您还可以在共享的do文件中定义summarie2.ado,这使得它非常可移植。主要区别不在于代码是否可见,但重新定义函数是否会在任何地方改变它。在R中重新定义sd不会破坏任何东西。那是“最深的部分”吗?你什么意思?我的问题是,我是否可以将用户编写的命令命名为与StataCorp编写的命令相同的名称。你的回答是不可能,因为它会改变其他调用summary的函数,对吗?也许问题的标题应该是“编写一个与现有命令同名的新命令”一些官方命令不能被用户编写的命令所取代,因为它们是由C代码定义的,没有任何用户编写的命令可以胜过这一点。由ado和/或Mata代码定义的其他官方命令可以由用户编写的命令代替,但通常这不是一个好主意。没有一个词的答案是合适的:“不能”和“不应该”都是严重不完整的。如果你想重新讨论这个问题,请在你的增补或修订中进行编辑。主要的区别不是代码是否可见,而是重新定义函数是否会在任何地方改变它。在R中重新定义sd不会破坏任何东西。那是“最深的部分”吗?你什么意思?我的问题是,我是否可以将用户编写的命令命名为与StataCorp编写的命令相同的名称。你的回答是不可能,因为它会改变其他调用summary的函数,对吗?也许问题的标题应该是“编写新的