在R

时间:2019-05-10 05:54:08

标签: r function subset

假设我有2个名为data.frame的列表。第一个data.farme的名称为Study1,第二个data.frame的名称为Study2(如下所示)。

在下面使用subset时,我丢失了Study1Study2这是我的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)

1 个答案:

答案 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")