Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更快的嵌套循环R_R_For Loop - Fatal编程技术网

更快的嵌套循环R

更快的嵌套循环R,r,for-loop,R,For Loop,我想加快我在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_2: A | B 1 | 3 6 | 2 5 | 3 如果A列和B列中的两个实例相同(或按.5的顺序),我想要1,否则在df_one(df_one$same)的额外列中需要0 我使用以下代码执行此操作: df_one$s

我想加快我在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_2:

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}
  }
}

df_one$same对于我认为您提出的问题,一个更快的解决方案是使用
left_-join
from
dplyr
并明确检查匹配项

left_join(df_one, df_two, by = "A") %>%
  mutate(same = B.x == B.y)
给予


对于我认为您提出的问题,一个更快的解决方案是使用
dplyr中的
left\u join
,并明确检查匹配项

left_join(df_one, df_two, by = "A") %>%
  mutate(same = B.x == B.y)
给予


进行
合并
,然后比较列,这将比使用循环快得多。您的代码不可复制,您想要的行为也不清楚<代码>小时数未定义,不清楚您试图实现的目标。有关如何编写一个好的R问题的更多信息,请参阅执行
合并
,然后比较列,这将比使用循环快得多。您的代码不可复制,您想要的行为也不清楚<代码>小时数未定义,不清楚您试图实现的目标。有关如何编写好的R问题的更多信息,请参阅