如果它们的长度不相同,如何找到相同的值?

how to find the same value if their length are not the same?

我想找到一个值的哪一行与另一个值具有相同的值? 这是代码:

> a
[1] 3 5 6
> num
     x  y z
1  112 55 0
2   23 21 1
3  121 56 2
4  132 15 3
5  123 15 4
6  132 45 5
7  132 41 6
8  179 45 7

要找出 num 的哪一行与 a 具有相同的值,是否有我可以使用的函数,例如 match 函数?我试过这段代码(它不起作用):

for(i in 1:length(num)){
  for (j in 1: length(a)){
    if (num$z[i]==a[j]){
      return(row(num[i]))
  }
 }
}

输出是警告。

见下面的代码。 lapply returns 列表和列表 which_rows 包含每列中出现值 a 的行。

which_rows <- lapply(df1, function(x) which(x %in% a))
which_rows 
$x
integer(0)

$y
integer(0)

$z
[1] 4 6 7

您几乎完成了 match 函数:

match(a, num$z)
# [1] 4 6 7

获取 num 满足 z==a 的完整行:

num[match(a,num$z),]
#     x     y     z
#   132    15     3
#   132    45     5
#   132    41     6

num %>% filter(z %in% a)
#     x     y     z
#   132    15     3
#   132    45     5
#   132    41     6

只得到 y:

num$y[match(a,num$z)]
# [1] 15 45 41