3

いくつかの変数に対して cox 回帰モデルを実行する必要があるため、それを実現するためのループを記述します。しかし、とにかくうまくいきません。以下は使用した私のコードです

names(Gen) 
varlist <- names(hsb2)[8:11]  ## get the variables i want to involve in loop
models <- lapply(varlist, function(x) {
    coxph(substitute(Surv(Time, Status) ~ i, list(i = as.name(x))), data = Gen, ties="efron")
})

エラー情報を取得しました

errors in terms.default(formula, special, data = data) : 
  no terms component nor attribute

この問題を解決する方法やコードの書き方を知っている人はいますか?

4

1 に答える 1

5

モデルは面白い方法で数式を評価するため、文字列を作成し、次のように使用reformulateて数式に変換することをお勧めしますではなくsubstitute。(reformulate入力の構文が正しいかどうかをテストするため、通常は望ましいですが、この場合は応答変数をマングルします。)

この一時関数を作成します。

tmpfun <- function(x) as.formula(paste("Surv(Time,Status)",x,sep="~"))

提供される関数の本体は次のlapplyようになります。

coxph(tmpfun(x), data = Gen, ties="efron")

(再現可能な例を提供しませんでしたが、これはうまくいくはずです...)

余分な (しかし完全に不必要な) クールさのために、代わりにlapply呼び出し全体を 2 つの別々のlapply呼び出しに置き換えることを試みることができます。

formlist <- lapply(varlist,tmpfun)
models <- lapply(formlist,data=Gen,ties="efron")
于 2012-10-26T19:50:45.273 に答える