微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R语言:foreach里面不执行下面部分的代码

如何解决R语言:foreach里面不执行下面部分的代码

您好,我正在使用 R 来处理数据。

我正在使用 foreach、doSNow 库进行并行计算

问题是 foreach 函数不执行代码

更具体地说,在下面的代码中,您可以看到 foreach 函数内部的“#”注释行。

那些是核心流程部分;评论,写文件很适合这样的评论

但是,当我删除“#”并尝试处理时,它在控制台上显示“任务完成”但不执行任何代码低于

colnames(df) <- c("caseid","role_cod","drugname","prod_ai","CID","CanonicalSMILES","IsomericSMILES")

代码

l <- as.integer( str_split(system( paste0("wc -l ",path,"withCID"),intern = TRUE )," ")[[1]][1] )

n =1000
inl <- as.integer(l/n)
rel <- l - inl*1000

progress <- function(n) cat(sprintf("task %d is complete\n",n))
opts <- list(progress=progress)

foreach( i=  1: inl,.packages=c("rlang","dplyr","stringr","tidyr","webchem","data.table"),.options.sNow=opts )%dopar%{
  
  df <- tryCatch(read.csv(file=paste0("/home/raspbie/Work/data/Final/withCID"),nrows=n,skip= (i-1)*n),error=function(e) NA)
  #if(is.na(df)){break}
  
  colnames(df) <- c("caseid","IsomericSMILES")
  
  #df<-as.data.frame(t(apply(df,1,function(x) append(x,Mstand$standardize_smiles(str_trim(x['CanonicalSMILES'],side="both"))) )))
  
  #writeLines(sprintf("\n\n\n %d :  %d \n\n\n ",((i-1)*n+1),(i)*n))
  #names(df)[dim(df)[2]] <- "Standerized_SMILES"
  #df<-df[,c("caseid","Standerized_SMILES","IsomericSMILES")]
  
  
  if(i == 1){
    write.table(df,file="/home/raspbie/Work/data/Final/final.csv",sep=",",row.names = FALSE)
    
  }else{
    write.table(df,row.names = FALSE,col.names = FALSE,append=TRUE)
  }
                               
}

它不工作有什么原因吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。