r - 如何创建一个数据框来收集 R 中具有多个索引的 for 循环的结果?

标签 r dataframe for-loop

我想从 for 循环中获取一个数据帧,在其中我可以更好地可视化代码的结果。我处于随机生存森林的背景下,所以我留下一个例子来更好地解释我。

library("randomForestSRC")
data(veteran, package = "randomForestSRC")
for(j in 1:3){for(i in 1:2){
  obj<- rfsrc(Surv(time, status) ~ ., data = veteran, 
              ntree = 100, block.size = j, mtry=i, nodesize = 3, samptype = "swr")
  car<-1-get.cindex(obj$yvar[,1], obj$yvar[,2], obj$predicted.oob)
  print(c(car, round(i, 0), j))
}}

得到的结果如下:

[1] 0.6748275 1.0000000 1.0000000
[1] 0.6877191 2.0000000 1.0000000
[1] 0.6577519 1.0000000 2.0000000
[1] 0.6826303 2.0000000 2.0000000
[1] 0.6614837 1.0000000 3.0000000
[1] 0.6847789 2.0000000 3.0000000

我想在数据框中收集这些结果,特别是我对“car”的值感兴趣。

我首先只尝试了索引 j 并且得到了我想要的。我已经构建了一个数据框和汽车:

b<- (1:3)
df<-data.frame(b)
car=0

然后,我仅对索引 j 运行相同的循环,并以后续方式获得我想要的数据帧(一列表示 j,一列表示为 car 获得的不同值):

for(j in 1:3){
  obj<- rfsrc(Surv(time, status) ~ ., data = veteran, 
              ntree = 100, block.size = 1, mtry=j, nodesize = 3, samptype = "swr")
  df$car[j]<-1-get.cindex(obj$yvar[,1], obj$yvar[,2], obj$predicted.oob)
}

相同的方法不适用于 i 和 j 索引一起使用。我希望有人能给我一些提示来解决这个问题。

最佳答案

必须在循环中处理两个索引可能有点不方便, 特别是因为您不追求数组输出。它可能更容易使用 Map() 以及使用 expand.grid() 创建的组合。同时 您可以改为使用信息更丰富的名称:

fit_car <- function(mtry, block.size) {
    obj <- rfsrc(
      Surv(time, status) ~ .,
      data = veteran,
      ntree = 100,
      block.size = block.size,
      mtry = mtry,
      nodesize = 3,
      samptype = "swr"
    )
    car <- 1 - get.cindex(obj$yvar[, 1], obj$yvar[, 2], obj$predicted.oob)
    car
}

df <- expand.grid(mtry = 1:2, block.size = 1:3)
df$car <- unlist(Map(fit_car, df$mtry, df$block.size))
df
#>   mtry block.size       car
#> 1    1          1 0.6857967
#> 2    2          1 0.7095443
#> 3    1          2 0.6437295
#> 4    2          2 0.6921294
#> 5    1          3 0.6640846
#> 6    2          3 0.6917901

关于r - 如何创建一个数据框来收集 R 中具有多个索引的 for 循环的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76349152/

相关文章:

r - 绘制两种正态分布混合的密度曲线

将数据从 3 行重组为 1

python - Google Analytics 数据到 Pandas Dataframe

python - 插值仍然离开 NaN 的(pandas groupby)

php - 在php中处理带有键和值的foreach

r - 渲染PDF文件时,如何在RMarkdown中将表格的所有行保持在同一页面上?

python - Pandas DataFrame 到字典的转换

c - 赋值给数组类型错误的表达式

python - 打印所有能被 7 整除并包含 7 从 0 到 100 的数字

r - 导入的包不会自动安装