[英]faster nested for loop R
我想加快我在R中的解決方案。
我有兩個數據框,比方說:df_one:
A | B | C | D | same
1 | 3 | 2 | 4 | NA
6 | 5 | 1 | 3 | NA
5 | 3 | 7 | 3 | NA
3 | 4 | 8 | 3 | NA
和df_two:
A | B
1 | 3
6 | 2
5 | 3
如果列A和列B中的兩個實例都相同(或順序為.5),則我希望為1,否則在df_one(df_one $ same)的額外列中為0。
我使用以下代碼進行了此操作:
df_one$same <- NA
for (i in 1:nrow(df_one)) {
for (j in 1:nrow(df_two)) {
distance <- seq(df_two[j, 2]-.5, df_two[j, 2]+.5, by = .1)
print(i)
if ((df_one[i, 1] == df_two[j, 1]) & (df_one[i, 2] %in% df_two[i, 2])){
df_one[i, 5] <- 1
break}
else{df_one[i, 5] <- 0}
}
}
誰能為我提供更快的解決方案?
對於我認為您要的問題,一種更快的解決方案是使用left_join
的dplyr
並顯式檢查匹配項。
left_join(df_one, df_two, by = "A") %>%
mutate(same = B.x == B.y)
給
A B.x C D same B.y
1 1 3 2 4 TRUE 3
2 6 5 1 3 FALSE 2
3 5 3 7 3 TRUE 3
4 3 4 8 3 NA NA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.