2014-12-11 61 views
0

我想創建一個Stata程序,它將接受一些參數並將它們傳遞給Mata,其中一個參數應該是向量。簡體版:將向量作爲參數傳遞給Mata函數

clear 
cap prog drop my1 
program my1 
    version 13 
    syntax , it(int) beta(numlist) 
    ... maybe to transform numlist to vector somehow? 

    mata: mymata(`it',`beta') 
end 
mata: mata clear 
mata: 
void mymata(real scalar it, 
      real vector beta) 
{ 
      it 
      beta 
      beta' 
} 
end 
mata: mata mosave mymata(), dir(PERSONAL) replace 

my1 , it(1234) beta(1,2,3) 

有沒有使這個numlist爲載體,並突入馬塔什麼簡單的辦法?我設法使用args而不是syntax,但由於我有很多參數,然後調用我的程序太亂了。

回答

3
clear 
cap prog drop my1 
program my1 
    version 13 
    syntax , it(int) beta(numlist) 
    local beta: subinstr local beta " " ", ", all 


    mata: mymata(`it',(`beta')) 
end 
mata: mata clear 
mata: 
void mymata(real scalar it, 
      real vector beta) 
{ 
      it 
      beta 
      beta' 
} 
end 

my1 , it(1234) beta(1 2 3) 
+0

謝謝你,這是我一直在尋找的! – nov 2014-12-12 16:28:43

相關問題