英文:
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 <- sapply(
1:5,
function(i) {
sample_data <- lung[sample(nrow(lung), replace = TRUE), ]
return(sample_data)
}
)
tmp <- 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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论