我正在为Python中的自定义对话框编写扩展命令。但是我很难从CDB的UI中捕获输入变量。输入变量如下:
1. %% dep_variable %%
这是因变量
的单变量选项
2。%% indep_variable %%
这是自变量的多变量选项
这是现在的代码。我打印自变量的回归系数。但是我遇到了两个问题:
1.执行逻辑回归的行无法读取%% dep_var %%或%% indep_var %%。当我创建变量(dep_var和indep_var_list)并将%% dep_var %%或%% indep_var %%放在引号之间时也不行。我做错了什么?
2.我无法迭代%% indep_var %%,我应该如何转换%% indep_var %%所以它是我可以迭代的自变量列表?
BEGIN PROGRAM.
import spss,spssaux
dep_var="%%dep_var%%"
indep_var_list="%%indep_var%%"
cmd="LOGISTIC REGRESSION VARIABLES dep_var\
/METHOD=ENTER indep_var_list\
/CRITERIA=PIN(.05) POUT(.10) ITERATE(20) CUT(.5)."
handle,failcode=spssaux.CreateXMLOutput(
cmd,
omsid="LOGISTIC REGRESSION",
visible=False)
for i in indep_var_list:
result=spssaux.GetValuesFromXMLWorkspace(
handle,
tableSubtype="Variables in the Equation",
rowCategory= indep_var_list[i],
colCategory="B",
cellAttrib="text")
print "The coefficient is: ", result[0]
END PROGRAM
答案 0 :(得分:0)
首先,您的cmd变量正在插入文字名称dep_var和indep_var_list。您需要这些变量的值,因此在语法中它们应该写为%% dep_var %%等,或者应该编写命令以使用变量替换,例如, """ LOGISTIC ... VARIABLES%s ...""" %(dep_var ...)
其次,您的indep_var_list变量是单个字符串,而不是列表。你需要先转换它,例如,
indep_var_list = indep_var_list.split()