2012-04-07 4 views
1

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

  1. 製品A:
    • 表1 - カラム。列b;列c;
    • 表2 - 列j;列k;列1;
  2. 製品B:
    • 表1 - カラムI。列ii。列iii;
    • 表2 - 列a;列b;列c;
    • 表3 - 列m;列n;列o;

しかし、製品の数は膨大であり、私は、製品Aの表1は、製品Bで同じ表であれば知っているドントが、私は私が欲しいテーブルが持っていることを知っていますか表1(製品A)や表2(製品B)のような他の製品表と同じ列名は、特定の列名を使用して製品ごとに表を選択できますか?

答えて

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

この関数は、column.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 
を与えます
関連する問題