2016-05-12 25 views
0

です。私は、線形回帰の式を作成するための汎用関数を実行しようとしています。私は、関数がデータフレーム内に存在するすべての変数を使用して、ユーザ定義された変数や、 関数のユーザー定義変数が

  • を使用して式のいずれか

    • を作成することを望みます。

    私はデータフレームに存在するすべての変数を使用して数式を作成できますが、ユーザー定義の変数を取得しようとすると問題が発生します。後で変数を使用して後で式。私が今まで持って

    機能はこれです:

    lmformula <- function (data, IndepVariable = character, VariableList = TRUE){ 
        if (VariableList) { 
    newlist <- list() 
    newlist <- # Here is where I do not exactly what to do to extract the variables defined by user 
    DependVariables <- newlist 
    f <- as.formula(paste(IndepVariable, "~", paste((DependVariables), collapse = '+'))) 
    }else { 
    names(data) <- make.names(colnames(data)) 
    DependVariables <- names(data)[!colnames(data)%in% IndepVariable] 
    f <- as.formula(paste(IndepVariable,"~", paste((DependVariables), collapse = '+'))) 
    return (f) 
    } 
    } 
    

    任意のヒントが深く理解されるだろうしてください

  • +1

    'f < - as.formula(sprintf("%s〜。 "、dependentVariable))のようなものです。 lm(f、data = data [、Predictors]) 'である。 LHSの回帰では従属変数であり、RHSでは回帰/独立変数であることに注意してください。 – Roland

    +0

    私の問題は 'DependVariables'です。ユーザーから与えられた変数を取得するにはどうすればよいですか?私が望むのは、ユーザがタイプした変数のリストを 'DependVariables'に保存することです。 – mina

    答えて

    2

    あなたは

    もし独立変数を取得する方法を変更する唯一のものですユーザーはそれらを指定し、その文字ベクトルを使用します直接

    それ以外の場合は、 (あなたがすでにやっている)従属変数以外のすべての変数を取るために

    注:ローランドが述べたように、式が

    # creating mock data 
    data <- data.frame(col1 = numeric(0), col2 = numeric(0), col3 = numeric(0), col4 = numeric(0)) 
    
    # the function 
    lmformula <- function (data, DepVariable, IndepVariable, VariableList = TRUE) { 
        if (!VariableList) { 
        IndepVariable <- names(data)[!names(data) %in% DepVariable] 
        } 
        f <- as.formula(paste(DepVariable,"~", paste(IndepVariable, collapse = '+'))) 
        return (f) 
    } 
    
    # working examples 
    lmformula(data = data, DepVariable = "col1", VariableList = FALSE) 
    lmformula(data = data, DepVariable = "col1", IndepVariable = c("col2", "col3"), VariableList = TRUE) 
    

    はそれが役に立てば幸いdependentVariable〜independentVariable1 + independentVariable2 + independentVariable3のようなものです!

    +0

    Yeap!非常に有用です。観測のおかげで、私は従属変数を間違って使用していたことに気付きませんでした。 – mina

    +0

    文字列名を数式に変換するには組み込みの 'reformulate()'関数が必要です。 'f <--reformulate(IndepVariable、DepVariable)' – MrFlick

    +0

    そして、もしあなたがdata.frame内の他の全ての変数をモデル化したいなら、 'resp〜.'という式を使うことができます。すべて明示的にリストする必要があります)。 – MrFlick

    関連する問題