foreach中意外的“ in”

时间:2019-06-04 17:24:36

标签: r foreach doparallel

我正在尝试优化我用doParallel/foreach包编写的for循环,但是在指定foreach()序列的方式上遇到了错误。

我编写的for循环将gen文件转换为等位基因调用。给一个简单的示例,其中gen文件如下所示:

22 rsXYZ 16162 G A 0 0 1 0 0 1 1 0 0

前5列是染色体,SNP,位置,等位基因1和等位基因2。此后3列分别用于每个人。例如,这里001涉及主题1。有效的for循环代码为:

geno_to_alleles <- function(geno) {
  # Pre-allocate final output - always initialize output variable to required length and data type
  tmp = matrix(nrow = (ncol(geno)-5)/3, ncol = nrow(geno), byrow= T)
  #j is subject index
  j =1
  for (i in seq(from=6,to=ncol(geno), by=3)){
    cat(round(i/ncol(geno)*100,2),"%    \r") # prints the percentage complete in realtime.
    tmp[j,1:nrow(geno)] <- t(apply(geno[, i:(i+2)], 1, paste, collapse = ""))
    j = j + 1
  }
}

foreach软件包提供的大多数示例都很简单,例如foreach(i=1:3)。我的情况for (i in seq(from=6,to=ncol(geno), by=3))稍微复杂一点,在尝试与foreach一起使用时似乎会引起问题

library(foreach)
library(doParallel)

foreach(i in seq(from=6,to=ncol(geno), by=3)) %dopar% geno_to_alleles(geno)

我收到以下错误:

  

错误:“ x <-foreach(i in”

中出现意外的'in'

我想加快这段代码的速度,并选择使用foreach/doParallel,因为我认为我不需要更改代码(就像我尝试使用Rcpp那样-我对此一无所知)。如果有人对提高速度的其他建议有建议,我也很高兴听到

0 个答案:

没有答案