r - 在 R 中子集化后保留列表元素名称

标签 r function subset

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

当我使用下面的子集时,我丢失了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)

最佳答案

我们可以使用subsetsubset参数来根据“长”列过滤行。由于“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/

相关文章:

c - 我在C程序中遇到冲突类型错误

r - 使用 for 循环对数据集进行分区

string - R:根据元素长度从向量中删除元素

r - dplyr 函数错误

java - 等效于 Java 中的 Python 的 lambda 函数?

r - 在R中绘制多元Logistic回归模型的结果

php - 使 PHP 函数相互协作

r - 使用 MICE 进行多重插补后,如何在 R 中的子集上使用 lm() 运行线性回归

r - 将图例添加到具有重叠密度图的 ggplot 直方图

r - 在 R 中向 igraph 添加文本