说我在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?
答案 0 :(得分:4)
您只需在原始列表中运行grep()
matches <- grep("b",alist)
然后与索引向量
进行交集intersect(matches, c(2,3,4))
这样,您可以获得原始列表中的索引,但只能获得子列表中包含的那些项目。
当然,你可以在一行中完成所有这些工作
intersect(grep("b",alist), c(2,3,4))
它开始看起来很像问题中的原始grep()
声明。