如果您说的都是真的,那么这是使用索引作为参数生成列表的典型方法:
t4list <- lapply(1:11, function(x) summary(survplot[x], times=4)[1] )
t4list
如果您真的意味着您想要一个基于当时的生存估计向量,那么sapply
在结果是“多维”的情况下,将尝试将结果简单地转换为原子形式,例如数字向量或矩阵。我原以为您可以通过以下方式获得有用的结果:
summary(survplot, times=4)[1]
那应该已经成功地为您提供了一个预测生存时间的向量(假设存在这样的时间。)如果您过于贪婪并将“时间”值推出超过估计值的位置,那么您将抛出错误。具有讽刺意味的是,如果至少有一次所有协变量的水平都有估计值,则不会引发错误。使用帮助页面中的示例作为起点:
fit <- survfit(Surv(time, status) ~ x, data = aml)
summary(fit, times=c(10, 20, 60) )[1]
#$surv
#[1] 0.9090909 0.7159091 0.1840909 0.6666667 0.5833333
# not very informative about which times and covariates were estimated
# and which are missing
# this is more informative
as.data.frame( summary(fit, times=c(10, 20, 60) )[c("surv", "time", "strata")])
surv time strata
1 0.9090909 10 x=Maintained
2 0.7159091 20 x=Maintained
3 0.1840909 60 x=Maintained
4 0.6666667 10 x=Nonmaintained
5 0.5833333 20 x=Nonmaintained
而如果您只使用 60,则会收到一条错误消息:
> summary(fit, times=c( 60) )[1]
Error in factor(rep(1:nstrat, scount), labels = names(fit$strata)) :
invalid labels; length 2 should be 1 or 1