马塔函数问题

时间:2018-10-19 12:51:07

标签: stata

我是Mata的新手,我正在尝试学习如何使用函数。

我的代码如下:

mata:
function foo()
{
        Y = X'
}
end

input x1 y1 z1  
223 676 457 787
913 743 346 890
546 876 123 105
end

putmata X=(x1 y1 z1)
mata: Y=foo()
getmata (x2 y2 z2)=Y

有人可以告诉我为什么这不起作用吗?

1 个答案:

答案 0 :(得分:2)

您的代码有两个问题:

  1. foo函数缺少用于向其馈送X的参数。
  2. 调用该函数后,转置的X被销毁。

您需要按以下方式修改功能:

mata:
function foo(a)
{
    return(a')
}
end

然后您可以使用X作为变量获取转置的getmata

clear 

input x1 y1 z1  
223 676 457 787
913 743 346 890
546 876 123 105
end

putmata X = (x1 y1 z1)
mata: Y = foo(X)
getmata (x2 y2 z2) = Y

list

     +-----------------------------------+
     |  x1    y1    z1    x2    y2    z2 |
     |-----------------------------------|
  1. | 223   676   457   223   913   546 |
  2. | 913   743   346   676   743   876 |
  3. | 546   876   123   457   346   123 |
     +-----------------------------------+