查找数据框中包含字符串向量中一个元素的行的索引

时间:2015-04-29 00:07:17

标签: r dataframe string-matching

如果我有像这样的data.frame

df <- data.frame(col1 = c(letters[1:4],"a"),col2 = 1:5,col3 = letters[10:14])
 df
   col1 col2 col3
1    a    1    j
2    b    2    k
3    c    3    l
4    d    4    m
5    a    5    n

我想得到包含c("a", "k", "n")中某个元素的行索引;在此示例中,结果应为1, 2, 5

2 个答案:

答案 0 :(得分:4)

如果您有一个大型数据框,并且希望检查所有列,请尝试使用

overflow-x: hidden;

当然你可以对最终结果进行排序。

答案 1 :(得分:0)

s <- c('a','k','n');
which(df$col1%in%s|df$col3%in%s);
## [1] 1 2 5

这是另一种解决方案。这个适用于整个data.frame,并且恰好将搜索字符串捕获为元素名称(您可以通过unname()删除它们):

sapply(s,function(s) which(apply(df==s,1,any))[1]);
## a k n
## 1 2 5

原始的第二个解决方案:

sort(unique(rep(1:nrow(df),ncol(df))[as.matrix(df)%in%s]));
## [1] 1 2 5