假设我有2个名为data.frame
的列表。第一个data.farme
的名称为Study1
,第二个data.frame
的名称为Study2
(如下所示)。
在下面使用subset
时,我丢失了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)
答案 0 :(得分:2)
我们可以使用subset
的{{1}}参数来基于'long'列过滤行。因为'long'是subset
,所以不需要logical
==
除了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")