Если все, что вы говорите, верно, то это типичный способ создания списка с использованием индексов в качестве аргументов:
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