根据列表列表的标识符从数据帧中提取值

时间:2017-03-29 14:47:20

标签: r list loops dataframe

我有一个提取数据框中的值并将它们分配给列表列表的标识符。示例:

Inupt1: BR 是我的列表列表,如下所示

$BR_1
[1] "id5"  "id6"  "id7"  "id8"  "id9"  "id10"

$BR_2
[1] "id13" "id14" "id15" "id16" "id17" "id18" "id19"

输入2: DF 是我的数据框,如下所示:

Ids      Value 
id1      0
id2      0
id3      0
id4      0
id5      1
id6      1
id7      1
id8      1
id9      2
id10     2
id11     0
id12     0
id13     1
id14     2
id15     3
id16     3
id17     3
id18     2
id19     1
id20     0

期望的输出:

BR_1 (1,1,1,1,2,2)  BR_2 (1,2,3,3,3,2,1)

然后从这些输出中我只需要那些没有最高分3(然后只有BR_1)的那些。

很抱歉,如果我对术语有点不正确的话。任何想法都非常感激。

1 个答案:

答案 0 :(得分:0)

我同意Sotos'使用lapply函数的想法。

您可以创建一个所有值都小于3的子集:

newDF = subset(DF, Value <3)
lapply(BR, function(x) newDF[match(x, newDF$Ids),"Value"])

或者您可以修改结果列表:

raw = lapply(BR, function(x) newDF[match(x, newDF$Ids),"Value"])
result = raw[sapply(raw, max) < 3]