宏的逻辑

问题描述

我是Stata的新手。 假设我们有一个trainre78作为变量的数据集。

为什么此代码有效

sum train
local a= r(N)*r(mean)                       
        


regress re78 train
outreg2 using TABLE_2.xls,addstat(A,`a') excel 

但不是这个

sum train
local a= r(N)*r(mean)
sum `a'
                    

这两个代码的目的都是调用局部变量a

解决方法

在Stata中,术语变量保留用于数据集中的列。局部宏称为局部宏,而不是局部变量。

为什么第二个代码失败?在sum train之后,本地宏a被计算为r(N) * r(mean),因此应包含上一次计算(应用summarize)的值的总和或总和。 (您也可以只使用r(sum)。)

让我们假设您的总和为42。

然后

sum `a' 

被解释为

sum 42 

,那么问题就与使用本地宏无关。问题在于summarize在那里没有合法的事可做。 summarize的最小合法语法是指定变量名或根本不指定变量名,这被解释为表示所有变量。但是42,或任何金额,都不适合语法,这是非法的。

我不清楚您希望此语法做什么,但这是不合法的。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...