如果它们的长度不相同,如何找到相同的值?
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
我想找到一个值的哪一行与另一个值具有相同的值? 这是代码:
> 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