Я получил список элементов с именем bcvCindex$BootstrapCrossValCindexMat
, используя следующий код:
library(prodlim)
set.seed(13)
dat <- SimSurv(100)
library(survival)
library(randomForestSRC)
cox12 <- coxph(Surv(time,status)~X1+X2,data=dat,x=TRUE,y=TRUE)
cox1 <- coxph(Surv(time,status)~X1,data=dat,x=TRUE,y=TRUE)
cox2 <- coxph(Surv(time,status)~X2,data=dat,x=TRUE,y=TRUE)
rsf1 <- rfsrc(Surv(time,status)~X1+X2,data=dat,ntree=15,forest=TRUE)
bcvCindex <- pec::cindex(list("Cox X1"=cox1,
"Cox X2"=cox2,
"Cox X1+X2"=cox12,
"RSF"=rsf1),
formula=Surv(time,status)~X1+X2,
data=dat,
splitMethod="bootcv",
B=5,
eval.times=seq(1,15,1),keep.index = T, keep.matrix = T)
bcvCindex$BootstrapCrossValCindexMat
Теперь я хочу функцию, которая получает список bcvCindex$BootstrapCrossValCindexMat
в качестве входных данных и вычисляет стандартное отклонение
для каждого столбца всех матриц, которые являются его частью и сохранить результаты в матрице. Итак, я попробовал это:
sdlist <- function(dat){
for (i in 1:4) {
for (j in i:15) {
desv <- matrix(nrow = 15,ncol = 4)
desv[i,j] <- sd(dat[[i]][,j],na.rm = TRUE)
}
}
return(desv)
}
sdlist(bcvCindex$BootstrapCrossValCindexMat)
Но я получаю ошибку.
Как я могу это сделать?