1

与えられた:

data(veteran)
library(survival)
veteran$prognostic_indicator <- 0
veteran$prognostic_indicator[veteran$karno<50] <- 1
model <- coxph(Surv(time,status)~age+prognostic_indicator,data=veteran)
library(obsSens)
object <- obsSensSCC(model, which = "prognostic_indicator", g0 = seq(1,10,0.01),p0 = c(0.05,0.1,0.2,0.3,0.4), p1 = seq(0, 1, 0.05), logHaz = FALSE, method = "approx")

ベクトルを抽出できます:

object$lcl[21,1,1:901]

これは降順で並べられています。1に最も近い数字の「名前」を抽出したいのですが、それより上です。その場合、対応する番号が 1.0001292 であるため、名前「2.69」または位置 170 を抽出します。位置 2.70 の数値は 0.9968844 であり、低すぎます。

数値が値 1.0 に最も近い降順の値のベクトルで位置 (または名前) を抽出するにはどうすればよいですか?

4

2 に答える 2

1

その値で新しいベクトルを作成する場合は、条件を満たす最初の要素を特定してから、シーケンス内で1つ戻します。

obj <- object$lcl[21,1,1:901] 
obj[which(obj< 1)[1] -1]

#    2.69 
#1.000129 

もう1つの方法は、逆ベクトルで作業することです。その後、バックトラックする必要はありません。

> rev(obj)[which(rev(obj) > 1)[1] ]
    2.69 
1.000129 
于 2013-01-22T22:09:53.397 に答える
0

DWin のクリーナー メソッドに加えて、別の方法を次に示します。

which.min(subset(object$lcl[21,1,1:901], object$lcl[21,1,1:901] > 1) - 1)
于 2013-01-22T22:11:02.480 に答える