如果我有像这样的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
。
答案 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