如何在R中对列表进行子集化?

huangapple go评论67阅读模式
英文:

How to subset a list in R?

问题

在以下代码中,我使用bootTest()函数创建了一个列表,其中从survival包的lung数据集中提取了5个样本。我想要提取第一次迭代的全部内容,就像下面的tmp()函数中所示。那个tmp()代码看起来非常笨拙。是否有一种干净的方法可以从bootTest()中提取第1次(以及第2次、第3次等)迭代的结果,作为一个数据框,并使用与lung数据框相同的列标题?

代码:

library(survival)
data(lung)

bootTest <- sapply(
  1:5,
  function(i) {
    sample_data <- lung[sample(nrow(lung), replace = TRUE), ]
    return(sample_data)
  }
)

tmp <- data.frame(bootTest[1, ],
                  bootTest[2, ],
                  bootTest[3, ],
                  bootTest[4, ],
                  bootTest[5, ])

请注意,我已经将tmp()函数的bootTest部分修复为正确的语法,以便提取第1到第5次迭代的结果。

英文:

In the below code, I create a list with the bootTest() function, where 5 samples are extracted from the lung dataset of the survival package. I would like to extract the first iteration in its entirety, as shown in tmp() function below. That tmp() code is awfully goofy. Is there a clean way to extract, as a dataframe and using the same column headers as the lung dataframe, the results of iteration 1 (and 2, then 3, and so on) from bootTest()?

Code:

library(survival)
data(lung)

bootTest &lt;- sapply(
  1:5,
  function(i) {
    sample_data &lt;- lung[sample(nrow(lung), replace = TRUE), ]
    return(sample_data)
  }
)

tmp &lt;- data.frame(bootTest[1,1],
                  bootTest[2,1],
                  bootTest[3,1],
                  bootTest[4,1],
                  bootTest[5,1],
                  bootTest[6,1],
                  bootTest[7,1],
                  bootTest[8,1],
                  bootTest[9,1],
                  bootTest[10,1]
                  )

答案1

得分: 3

使用基本的R语言,你可以这样做:

data.frame(bootTest[,1])

然后,你可以使用以下代码检查结果是否与"tmp"相等:

all.equal(data.frame(bootTest[,1]), tmp)
[1] TRUE
英文:

In base R you can do:

data.frame(bootTest[,1])

all.equal(data.frame(bootTest[,1]), tmp)
[1] TRUE

huangapple
  • 本文由 发表于 2023年6月2日 04:49:37
  • 转载请务必保留本文链接:https://go.coder-hub.com/76385619.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定