如何制作不依赖于变量顺序的Stata插件?

如何制作不依赖于变量顺序的Stata插件?

问题描述:

我正在为C++编写一个Stata插件,在我看来,访问数据取决于传递给插件的变量顺序,因为SF_vdata()仅需要整数参数来索引变量。如何制作不依赖于变量顺序的Stata插件?

我现在最好的解决方案是首先运行ds,存储包含所有变量名称的宏,然后调用我的插件。然后,我的插件可以在宏中搜索它感兴趣的变量,并获取索引库在列表中的位置。

这有效,但我希望我的插件不要依赖于某些Stata命令首先运行。我知道这很愚蠢,因为插件需要以特定的方式对数据集进行格式化,但是在调用我的插件之前首先必须调用ds并存储宏,感觉有些问题。

如果不先调用ds,有没有办法从插件中访问变量名的顺序?

+1

插件得到StataCorp的支持很大程度上是因为有些人声称他们想要或需要他们,但公众的吸引力非常小。 (在大型公司或机构内开发纯粹供内部使用的代码的例外情况很可能存在)。无论哪种方式 - 我知道这不太可能成为您寻求的答案 - 我的猜测是,您会发现它更容易,更容易使用Mata为你想要的。正如你所发现的那样,对插件的支持基本上是微乎其微的,因为很少有用户程序员曾经写过或很有兴趣编写任何插件。 – 2013-03-26 19:25:57

我同意尼克。不幸的是,您的宏观解决方案是唯一的答案,并且是我使用的。您只能使用SF_data函数直接访问数据,作为“矩阵”,这就是默认情况下获得的所有内容,表格中没有头文件。我使用宏来保存所有的数据信息,并传递整个数据集,像你一样读取我感兴趣的变量,甚至编写翻译器来保留格式设置,但尚未使用值标签。