R使用来自一个数据框的标准来从列表中选择元素

时间:2013-12-17 13:12:27

标签: r list dataframe criteria

我想在一个数据框(df)中使用条件来从列表中选择元素(mlist)。具体来说,df的范围定义了我需要的列表中的哪些元素组。

例如:

df = data.frame(Start=c(1,12,20), Stop=(4,16,22))  #there may be hundreds of these of arbitrary lengths.

mlist = c(a,b,c,d,e,f,....) 

我可以像这样单独选择它们:

sublist <- mlist[df$Start[1]:df$Stop[1]]

我可以构建一个for循环来遍历所有的开始/停止对并使用rbind将它们组合在一起,但是我想避免因为速度而导致for循环。是否有类似于上面列出的命令(sublist <- mlist[...])的语法可以执行此操作,还是有另一个函数(plyr?)可以以这种方式使用两个对象(列表和数据框)?

1 个答案:

答案 0 :(得分:0)

最明显的解决方案(尽管它是隐藏循环)是使用apply,如下所示:

df = data.frame(Start=c(1,12,20), Stop=c(4,16,22))
df
#   Start Stop
# 1     1    4
# 2    12   16
# 3    20   22
mlist <- letters
apply(df, 1, function(x) mlist[x[1]:x[2]])
# [[1]]
# [1] "a" "b" "c" "d"
#
# [[2]]
# [1] "l" "m" "n" "o" "p"
#
# [[3]]
# [1] "t" "u" "v"