2016-12-14 6 views
-1

Я хотел бы преобразовать этот код, чтобы иметь функцию вместо:питон функция многократного возвращения

variables = ['oki']    
for var in variables: 
    lm_full = sm.formula.ols(formula='%s ~ diag + age + ICVcm3' % var, data=dfwo2).fit() 
    print("===============================================================================") 
    print("   formule = %s ~ diag + age + ICVcm3" % var) 
    print("===============================================================================") 
    print(lm_full.summary()) 

В конце я хотел бы что-то похожее:

function(oki,diag,age,ICVcm3,dfwo2) что бы вернуть результат из петля.

У меня нет ни малейшего понятия о том, как это сделать. Примеры, которые я нашел в Интернете, очень просты. Я даже не знаю, что напечатать на google, чтобы получить ответ.

+0

Вы должны агрегировать * BASIC * результаты вы получили через Интернет и нужно изменить их в соответствии с вашими требованиями. –

+0

Базовый шаблон для возврата цикла: начните с списка аккумуляторов 'result = []'; '.append()' результат каждой итерации на накопитель в цикле; return 'result'. – DyZ

ответ

-1

Ваш цикл является переменным, который содержит только 1 элемент: строку. Итак, какова цель такой петли? diag, age, ICVcm3, dfwo2 где все эти значения delcared? Что такое функция? Кажется, это очень специфическая тема.

Хотя только гадать, что-то вроде этого может быть то, что вы так долго искали:

def myfunction(variables,diag,age,ICVcm3,dfwo2): 
    for var in variables: 
     lm_full = sm.formula.ols(formula='%s ~ diag + age + ICVcm3' % var, data=dfwo2).fit() 
     print("===============================================================================") 
     print("   formule = %s ~ diag + age + ICVcm3" % var) 
     print("===============================================================================") 
     print(lm_full.summary()) 
+0

Эта функция не возвращает результат цикла. Он возвращает «Нет». – DyZ

2

Вы можете вернуть список кортежей:

def myFunction(variables): 
    result = [] 
    for var in variables: 
     formula = "   formule = %s ~ diag + age + ICVcm3" % var 
     lm_full = sm.formula.ols(formula=formula, data=dfwo2).fit() 
     result.append((formula, lm_full.summary())) 
    return result 
1

Этот код показывает, как вернуть элементы, которые были вычислены в функции и как их получить в вызывающей функции. Обратите внимание на то, как вы можете вернуть столько или несколько элементов, сколько хотите, и даже если функция возвращает элементы, код которых не нужен, вы можете их игнорировать. (Это назначение переменных с именем dummy.)

Я использую один из наборов данных, который поставляется с statsmodels, так как я не узнаю тот, который вы используете.

import statsmodels as sm 
df = sm.datasets.get_rdataset("Guerry", "HistData").data 
df = df[['Lottery', 'Literacy', 'Wealth', 'Region']].dropna() 
import statsmodels.formula.api as smf 

def regress(variables): 
    results = [ ] 
    for variable in variables: 
     mod = smf.ols(formula='Lottery ~ %s' % variable, data=df) 
     result = mod.fit() 
     results . append ((variable, result.params, result.df_resid, result.rsquared)) 
    return results 

for result in regress (['Literacy', 'Wealth', 'Region']): 
    variable, dummy, dummy, R_squared = result 
    print (variable, R_squared ) 

Результаты, как это:

Literacy 0.145720612937 
Wealth 0.243180384656 
Region 0.142107524677 
Смежные вопросы