【发布时间】:2014-09-05 19:59:04
【问题描述】:
所以定义一个名为“Z”的矩阵,并显示它的第一个元素效果很好:
. matrix Z = J(1,3,0)
. matrix list Z
Z[1,3]
c1 c2 c3
r1 0 0 0
. di el(Z,1,1)
0
另一方面,简单地将名称更改为“P”会破坏el()的功能:
. matrix P = J(1,3,0)
. matrix list P
P[1,3]
c1 c2 c3
r1 0 0 0
. di el(P,1,1)
type mismatch
为什么?
更新 1:
在发现上述行为时(在调试会话期间),我从命令行和 ado 文件复制,然后在使用 clear、drop program _all 和 matrix drop _all 清除 Stata 后复制。但是,在重新启动 Stata 后,我无法重现该行为。
更新 2:
至少我认为我使用了clear... 进一步调查表明,如果我在内存中有一个名称以“P”开头的变量,我可以在重新启动时重现该行为。例如(重新启动 Stata):
. matrix P = J(1,3,0)
. matrix list P
. di el(P,1,1)
0
. set obs 100
obs was 0, now 100
. gen Parsnips = uniform()
(100 real changes made)
. di el(P,1,1)
type mismatch
. rename Parsnips parsnips
. di el(P,1,1)
0
【问题讨论】: