数式、環境、およびsurvfit()
に問題があります。Rサバイフィットの式
lm()
の場合は正常に動作しますが、survfit()
の場合は失敗します。
一般的な問題の記述:
私はいくつかのデータへの数式のシリーズをフィッティングしています。だから、私は モデリング関数を変数として渡された数式と呼んでいます。後で 私はフィットしたオブジェクトから数式で作業したい。
(ビューの私の素朴な視点から、トラブルが環境を記録していない survfitから来ています。)
詳細な例lm()
に見られるように
期待される動作:
library("plyr")
preds <- c("wt", "qsec")
f <- function() {
lm(mpg ~ wt, data = mtcars)
}
fits <- alply(preds, 1, function(pred)
{
modform <- reformulate(pred, response = "mpg")
lm(modform, data = mtcars)
})
fits[[1]]$call$formula
##modform
formula(fits[[1]])
## mpg ~ wt
## <environment: 0x1419d1a0>
にもかかわらずfits[[1]]$call$formula
はmodform
に解決できます はまだformula(fits[[1]])
で元の公式を得ることができます。
しかし、物事はsurvfit()
で失敗:
library("plyr")
library("survival")
preds <- c("resid.ds", "rx", "ecog.ps")
fits <-
alply(preds, 1, function(pred)
{
modform <- paste("Surv(futime, fustat)", pred, sep = " ~ ")
modform <- as.formula(modform)
print(modform)
fit <- survfit(modform, data = ovarian)
})
fits[[1]]$call$formula
## modform
formula(fits[[1]])
## Error in eval(expr, envir, enclos) : object 'modform' not found
ここ
(およびLM-フィットとは対照的に)、formula(fits[[1]])
はない 作業を行います!
私の具体的な質問は次のとおりです。 の式を返信してfits[[1]]
に合わせるにはどうすればよいですか?
'<収まるように式を置くことによって評価することによって、この問題を解決することができます - evalの(代替(survfit(modformを、 data =卵巣)、list(modform = modform))) 'または単に式をsurvifitオブジェクトに追加して' fit $ call $ formula < - modform'そして 'fit'を返してください – rawr
ありがとう!それは動作します。私は、問題のサンプルコードで生成されているように、fits [1]]から数式を復元する方法はありませんか?その場合:あなたが答えとしてあなたのコメントを書くなら、私はそれを受け入れるでしょう。 – Andreas