R 从数据帧检索行索引

R 从数据帧检索行索引,r,dataframe,R,Dataframe,下面是一个我正在尝试做的小例子 x<-c(11,38,24) z1<-c(26,42,23,61,11) z2<-c(52,38,82,99,74) z3<-c(19,72,28,24,25) dat<-data.frame(z1,z2,z3) x这应该可以: sapply(1:length(x), function(j) which(x[j] == dat[, j])) 如果您有重复的元素(比如第一列中数字11的两倍),那么这将返回一个列表。否则(如本例

下面是一个我正在尝试做的小例子

x<-c(11,38,24)

z1<-c(26,42,23,61,11) 
z2<-c(52,38,82,99,74)
z3<-c(19,72,28,24,25)

dat<-data.frame(z1,z2,z3)
x这应该可以:

sapply(1:length(x), function(j) which(x[j] == dat[, j]))

如果您有重复的元素(比如第一列中数字11的两倍),那么这将返回一个列表。否则(如本例中)将得到一个简单的向量。

您可以使用
mapply

mapply(function(a, b) which(a == b), dat, x)
# z1 z2 z3 
#  5  2  4 
要获得准确的所需结果,请将
USE.NAMES
参数设置为
FALSE

mapply(function(a, b) which(a == b), dat, x, USE.NAMES = FALSE)
# [1] 5 2 4
mapply(function(a, b) which(a == b), dat, x, USE.NAMES = FALSE)
# [1] 5 2 4