假设我有一个包含 2 个名为 data.frame
的列表。第一个 data.farme
的名称为 Study1
,第二个 data.frame
的名称为 Study2
(如如下所示)。
当我使用下面的子集
时,我丢失了Study1
或Study2
,它们是我的data.frames的名称?
我想知道是否有一种方法可以从这些 data.frames 中提取子集,同时保留它们的名称?
a <- list(Study1 = data.frame(d = 6:8, long = c(T, F, T)), Study2 = data.frame(d = 9:11, long = c(T, T, F)) )
subset(a[[1]], long == T)
最佳答案
我们可以使用subset
的subset
参数来根据“长”列过滤行。由于“long”是逻辑
,因此不需要==
lapply(a, subset, subset = long)
除了if/else
条件外,如果有多个值,还可以选择swtich
dd <- function(a, val = "long") {
switch(val,
"long" = lapply(a, subset, subset = long),
"short" = lapply(a, subset, subset = !long)
)
}
dd(a1, "short")
数据
a1 <- list(Study1 = data.frame(d = 6:8, long = c(T, F, T)),
Study2 = data.frame(d = 9:11, long = c(T, T, F)) )
关于r - 在 R 中子集化后保留列表元素名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56071491/