在R中使用我定义的函数并行foreach

在R中使用我定义的函数并行foreach,r,function,foreach,parallel-processing,defined,R,Function,Foreach,Parallel Processing,Defined,我想利用R中的foreach来并行下面的过程。这个过程是比较列“a”的值与列“b”和“c”的值。如果选择这两个值,请将flag列设置为TRUE,否则将其设置为FALSE。我定义了一个示例数据集,并编写了一个函数来进行比较。我理解函数实现不适合这种并行过程,因为不同节点的返回时间不同。因此,如果您能帮助我如何修改函数,以及如何通过并行运行来获得所需的结果,我将不胜感激 a <- sample(seq(1:30),10) b <- sample(seq(20:30),10) c <

我想利用R中的foreach来并行下面的过程。这个过程是比较列“a”的值与列“b”和“c”的值。如果选择这两个值,请将flag列设置为TRUE,否则将其设置为FALSE。我定义了一个示例数据集,并编写了一个函数来进行比较。我理解函数实现不适合这种并行过程,因为不同节点的返回时间不同。因此,如果您能帮助我如何修改函数,以及如何通过并行运行来获得所需的结果,我将不胜感激

a <- sample(seq(1:30),10)
b <- sample(seq(20:30),10)
c <- sample(seq(1:20),10)
data <- cbind(id,a,b,c)
data <- as.data.frame(data)

setFlag <- function(id ,data){
  if(data[id]$a > df[id]$b  &  data[id]$a < data[id]$c){
    flag <- TRUE
    }else{
    flag <- FALSE
    }
  return(flag)
}

NUM_OF_PROCESSOR <- 6
cluster <- makeCluster(NUM_OF_PROCESSOR, type = "SOCK")
cluster <- registerDoSNOW(cluster)

data$flag <- foreach(i=1:10, .combine = 'c') %dopar% setFlag(i, data)

a这可以通过向量操作完成:
data$flag data$b&data$a>data$c
。谢谢史蒂夫!我不敢相信这有多容易,为什么我没有想到这种简单的方法。你帮了大忙!这可以通过向量操作完成:
data$flag data$b&data$a>data$c
。谢谢史蒂夫!我不敢相信这有多容易,为什么我没有想到这种简单的方法。你帮了大忙!