1

我是 R 编程的初学者,并认为是否无法使用列名选择表并从列表列表中创建表列表,其中主列表的每个元素中都有不同的表为了更清楚,我有一个列表此列表中按产品列出的具有不同表格的产品。像这样:

  1. 产品一:
    • 表 1-a 栏;b栏;c栏;
    • 表 2 - j 栏;k栏;l栏;
  2. 产品乙:
    • 表 1 - 第 i 列;第二栏;第三栏;
    • 表 2-a 栏;b栏;c栏;
    • 表 3 - m 栏;第 n 列;o栏;

但是,产品的数量是多么巨大,我不知道产品 A 中的表 1 是否与产品 B 中的表相同,但我知道我想要的表在其他产品中具有相同的列名表(如表 1(产品 A)和表 2(产品 B)),是否可以使用特定的列名按产品选择表?

4

1 回答 1

1
filter.by.colnames <- function(tab.list, col.names) {
    lapply(tab.list, function(product) Filter(function(tab) col.names %in% colnames(tab), product))
}

此函数将为您提供来自 tab.list 的表列表列表,其中列名中包含 col.names 中的字符串。

>tab.list <- list(ProductA = list(Table1 = table(1:3, c('a', 'b', 'c')),
                                 Table2 = table(1:3, c('j', 'k', 'l'))),
                 ProductB = list(Table1 = table(1:3, c('i', 'ii', 'iii')),
                                 Table2 = table(1:3, c('a', 'b', 'c')),
                                 Table3 = table(1:3, c('m', 'n', 'o'))
                                 ))
>filter.by.colnames(tab.list, c('a'))

给你

$ProductA
$ProductA$Table1

    a b c
  1 1 0 0
  2 0 1 0
  3 0 0 1


$ProductB
$ProductB$Table2

    a b c
  1 1 0 0
  2 0 1 0
  3 0 0 1
于 2012-04-07T02:55:20.500 回答