1

私はRプログラミングの初心者であり、列名を使用してテーブルを選択し、メインリストの各要素に異なるテーブルを持つリストのリストからテーブルのリストを作成することができないと考えました。より明確にするために、私はのリストを持っていますこのリストの製品ごとに異なるテーブルを持つ製品。このような:

  1. 製品 A:
    • 表 1 - 列 a; 列 b; 列 c;
    • 表 2 - 列 j; 列 k; 列l;
  2. 製品 B:
    • 表 1 - 列 i; 列 ii; 列iii;
    • 表 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))
}

この関数は、列名に col.names の文字列を持つ tab.list からのテーブルのリストのリストを提供します。

>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 に答える