grep子集索引引用

时间:2011-09-14 17:43:22

标签: r

说我在R

中有一个列表
alist<-c("a","a","b","c")

现在我想获取该列表的一部分alist[c(2,3,4)]

如果我将grep函数应用于子集,即

grep("b",alist[c(2,3,4)]) 

我会得到2.无论如何都要使用grep函数,以便在原始列表中获得b的位置而不是子集?那么grep函数将返回3而不是2?

1 个答案:

答案 0 :(得分:4)

您只需在原始列表中运行grep()

即可
matches <- grep("b",alist)

然后与索引向量

进行交集
intersect(matches, c(2,3,4))

这样,您可以获得原始列表中的索引,但只能获得子列表中包含的那些项目。

当然,你可以在一行中完成所有这些工作

intersect(grep("b",alist), c(2,3,4))

它开始看起来很像问题中的原始grep()声明。