2016-07-04 8 views
0

は私が悩みを抱えています)... evalの中はRで線形回帰と新しい関数の作成:次に</p> <p>私は、私が以前に作成したデータフレームからのデータを使用してそれを呼び出す(<code>DATOS</code>:<code>lm()</code>関数を呼び出す関数を作成するとき

regresionLineal(Estatura, Largo, Ancho, DATOS) 

エラー(exprの、ENVIR、enclos): を見つけたから呼び出されていないオブジェクトのEstatura ':(evalのexprの、ENVIR、enclos)

すべてのヘルプは大歓迎だろう...

+2

式インターフェイスでは引用されていない名前が使用されているため、そのまま渡す必要があります。 (実際には、Rはあなたが[column]の名前が参照するオブジェクトを渡そうとしていると思っています。実際にはdata.frameの外には存在しません)。実際には、式全体をパラメータとして渡す方が簡単です。 – alistaire

答えて

1

あなたが行う必要があります。

regresionLineal <- function (vardep, varindep1, varindep2, DATA) { 
    lm(paste(vardep, "~", varindep1, "+", varindep2), data = DATA) 
    } 
あなたは vardepに渡し

varindep1varindep2文字列として。例として、私はRの内蔵treesデータセットを使用します。私たちはこれをやって、なぜわざわざ

regresionLineal("Height", "Girth", "Volumn", trees) 
# Call: 
# lm(formula = paste(vardep, "~", varindep1, "+", varindep2), data = DATA) 

# Coefficients: 
# (Intercept)  Girth  Volume 
#  83.2958  -1.8615  0.5756 

しかし、私は表示されません。数式内のすべての変数を指定する必要がある場合、単純に完全な数式を渡すのはなぜですか?その場合は、lm()を独自の関数を定義せずに直接使用することができます。

+0

ありがとう、まあ、私は私のフォーミュラで別の関数を呼び出さなければならないと言っています。これが私がこれをした理由です。とにかく「lm」はもっと難しいものでした。 –

関連する問題

 関連する問題