如何解决R语言:foreach里面不执行下面部分的代码
您好,我正在使用 R 来处理数据。
我正在使用 foreach、doSNow 库进行并行计算
更具体地说,在下面的代码中,您可以看到 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 举报,一经查实,本站将立刻删除。