给出像
这样的data.framex y label
1 2 a
2 3 b
3 4 c
和值" 2"," 3"," b"从data.frame确定行索引/数字的最快方法是什么?
在这种情况下,答案应为2。
答案 0 :(得分:1)
您可以按照以下方式使用do.call
和paste
,
which(do.call(paste, df) == '2 3 b')
#[1] 2
但是,您需要注意如何定义字符串(在本例中为2 3 b
)。以下将澄清,
which(do.call(paste, c(df, sep = ',')) =='2,3,b')
#[1] 2
which(do.call(paste, c(df, sep = '_')) =='2_3_b')
#[1] 2
或者,如果您要检查多个字符串,那么match
会派上用场,
ind <- c('2,3,b', '3,4,c')
match(ind, do.call(paste, c(df, sep = ',')))
#[1] 2 3
答案 1 :(得分:0)
我们可以使用
which(!rowSums(df1!= list(2, 3, "b")))
#[1] 2
或另一个选项是Map
which(Reduce(`&`, Map(`==`, df1, list(2, 3, 'b'))))
#[1] 2