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 的数字的“名称”。在这种情况下,我想提取名称“2.69”或位置 170,因为相应的数字是 1.0001292。位置 2.70 的数字是 0.9968844,因此太低了。

如何在递减值向量中提取位置(或名称),其中数字最接近值 1.0,但高于?

4

2 回答 2

1

如果您使用该值创建一个新向量,则识别满足条件的第一个元素,然后将一个元素移回序列中。

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

#    2.69 
#1.000129 

另一种方法是处理反向向量。然后你不需要回溯:

> 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 回答