R - 比较列表和标志匹配
R - Compare lists and flag matches
我有 2 个列表,我需要识别并标记列表 1 和列表 2 之间的匹配项。
示例:
List 1 List 2
1 1
2 2
3 3
4 4
5 5
6
7
8
9
10
期望的输出:
List 1 Match
1 Y
2 Y
3 Y
4 Y
5 Y
6 N
7 N
8 N
9 N
10 N
我尝试将 if 语句组合在一个循环中,但无论是否匹配,它都只会产生负面结果。任何帮助将非常感激!
我目前的做法:
for(x in 1:List1))
{
if(List1[x] %in% List2 == TRUE) {
List1$Match <- 'Yes'
}else{
List1$Match <- 'No'
}
}
所以我需要将 TRUE 或 FALSE 附加到列表 1
> List1 %in% List2==TRUE
[1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
这个技巧可以用Y和N代替true false:
List1$Match <- List1 %in% List2==TRUE
list1 <- c( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
list2 <- c( 1, 2, 3, 4, 5)
result1 <- list1 %in% list2
result1 <- gsub("TRUE", "Y", result1)
result1 <- gsub("FALSE", "N", result1)
不需要两次使用gsub
,你可以简单地使用索引
List1 <- 1:10
List2 <- 1:5
c("N", "Y")[(List1 %in% List2) + 1]
## [1] "Y" "Y" "Y" "Y" "Y" "N" "N" "N" "N" "N"
或者更简单
ifelse(List1 %in% List2, "Y", "N")
# [1] "Y" "Y" "Y" "Y" "Y" "N" "N" "N" "N" "N"
我有 2 个列表,我需要识别并标记列表 1 和列表 2 之间的匹配项。
示例:
List 1 List 2
1 1
2 2
3 3
4 4
5 5
6
7
8
9
10
期望的输出:
List 1 Match
1 Y
2 Y
3 Y
4 Y
5 Y
6 N
7 N
8 N
9 N
10 N
我尝试将 if 语句组合在一个循环中,但无论是否匹配,它都只会产生负面结果。任何帮助将非常感激!
我目前的做法:
for(x in 1:List1))
{
if(List1[x] %in% List2 == TRUE) {
List1$Match <- 'Yes'
}else{
List1$Match <- 'No'
}
}
所以我需要将 TRUE 或 FALSE 附加到列表 1
> List1 %in% List2==TRUE
[1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
这个技巧可以用Y和N代替true false:
List1$Match <- List1 %in% List2==TRUE
list1 <- c( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
list2 <- c( 1, 2, 3, 4, 5)
result1 <- list1 %in% list2
result1 <- gsub("TRUE", "Y", result1)
result1 <- gsub("FALSE", "N", result1)
不需要两次使用gsub
,你可以简单地使用索引
List1 <- 1:10
List2 <- 1:5
c("N", "Y")[(List1 %in% List2) + 1]
## [1] "Y" "Y" "Y" "Y" "Y" "N" "N" "N" "N" "N"
或者更简单
ifelse(List1 %in% List2, "Y", "N")
# [1] "Y" "Y" "Y" "Y" "Y" "N" "N" "N" "N" "N"