2016-12-14 15 views
-1

私の代わりに機能するには、このコードを変換したい:の結果を返しますPython関数複数の戻り

function(oki,diag,age,ICVcm3,dfwo2):私はのように見える何かをしたいと思い終わり

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()) 

をループ。

私はそれを行う方法の手がかりがありません。私がインターネット上で見つけた例は非常に基本的なものです...私は答えを得るためにGoogleに何を入力するべきかも知らない。

+0

あなたがインターネット上で得た* BASIC *結果を集計し、あなたの要件ごとにそれらを変更する必要がありますする必要があります。 –

+0

ループの基本パターンは、アキュムレータリストで始まります。 'result = []';ループ内のアキュムレータへの各反復の結果を '.append() 'します。 'result'を返します。 – DyZ

答えて

-1

あなたのループは、1つの項目だけを含む変数では変数です:文字列。 とにかくこのようなループの目的は何ですか? diag、年齢、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

この関数はループの結果を返しません。 'None'を返します。 – 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

このコードが返す方法を示します関数で計算された項目と、呼び出し関数でそれらを取り出す方法。どのように多くのアイテムを返すことができますか、そしてあなたが望むようにアイテムを返すことができます。そして、関数が呼び出しコードを必要としないアイテムを返しても無視することができます。これはダミーのという変数の目的です。

私はあなたが使用しているものを認識しないので、私はstatsmodelsに付属のデータセットの1つを使用しています。

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