2016-08-18 296 views
1

跟進this question and it's answer,我試圖在Python中創建一個SPSS自定義函數,以便在SPSS語法中使用。SPSS - 啓動腳本中的Python函數

我有一個程序,在語法效果很好:

begin program. 

import spss,spssaux, sys 

def CustomFunction(): 
    #function code here 

CustomFunction() 

end program. 

但我想CustomFunction()是在「正常」 SPSS語法可用。

回答

1

標準語法不使用Python代碼,也不會將Python函數添加到轉換系統中。如果你有一個Python模塊,只需導入該模塊就可以直接使用它的內容。不用擔心多次導入它,因爲Python在忽略冗餘導入時很聰明。

如果要將Python代碼用作常規語法,則需要創建擴展命令。這些標準樣式的語法,但在Python(或R或Java)中實現。其中有很多安裝有統計信息或可以從「實用程序」菜單(或V24中的「擴展」菜單)進行安裝。有關如何編寫這些內容的信息位於幫助系統中的Python幫助文檔和相關主題中。

作爲示例,SPSSINC TRANS擴展命令使Python函數可用作轉換代碼。例如,如果CustomFunction創建或轉換變量casewise並存儲在mymodule.py中,則可能會像這樣調用它。

SPSSINC TRANS RESULT = newvar
/FORMULA「mymodule.CustomFunction(x,y,z)」。

統計信息開始時會自動加載擴展命令,因此不需要啓動腳本。

+0

然後它看起來像我真正需要的是將我的CustomFunction()變成一個擴展命令。編輯最初的帖子,以便使需要更清楚 –

+0

如果它只是一個轉換,您可以使用TRANS。對於其他事情,您可以創建一個定義語法的XML文件:命令名稱,子命令和關鍵字類型以及任何其他標記,然後使用統計信息附帶的extension.py模塊來映射和驗證該文件並將其傳遞到您的代碼。或者,您可以爲其創建一個自定義對話框,併爲該語法創建一個幫助文件。通常情況下,您將其作爲擴展包打包,以便安裝,但至少需要xml文件和Python代碼,這些代碼可以複製到適當的位置。 – JKP