<div dir="ltr"><font color="#000066"><font face="courier new,monospace">Amigos de R,</font></font><div><font color="#000066"><font face="courier new,monospace"><br></font></font></div><div style><font color="#000066" face="courier new, monospace">Gostaria de uma ajuda ara otimizar um loop. </font></div>

<div style><font color="#000066" face="courier new, monospace"><br></font></div><div style><font color="#000066" face="courier new, monospace">Simulei algumas populaçoes com resultados de testes. Agora quero amostrar mil amostras de cada população e cada set de 1000 amostras em algumas condições como tamanho da amostra e prevalencia do evento do interesse. Ao total seriam mais de 1500 amostragens. Por isso, qualquer dica para torna-lo mais rápido e eficiente será bem vinda. Eu sei que faltou diversas populações.... mas é que o arquivo é grande.</font></div>

<div style><font color="#000066" face="courier new, monospace"><br></font></div><div style><font color="#000066" face="courier new, monospace">O script inicial...</font></div><div style><font color="#000066" face="courier new, monospace"><div style>

<br></div><div style><div>with <- 250000</div><div>without <- 250000</div><div>set.seed(as.numeric(Sys.time()))</div><div><br></div><div>#Population 1: bi-normal distribution with equal varainces</div><div><br></div>

<div># Population 1 with AUC = .9</div><div>pop1 <- round(rnorm(without,200,60))</div><div>pop1 <- as.data.frame(cbind(0,pop1))</div><div>colnames(pop1) <- c('reference','test')</div><div># pop1[1:10,];nrow(pop1)</div>

<div>pop1temp <- round(rnorm(without,309,60))</div><div>pop1temp <- as.data.frame(cbind(1,pop1temp))</div><div>colnames(pop1temp) <- c('reference','test')</div><div># pop1temp[1:10,]; nrow(pop1temp)</div>

<div>pop1_9 <- rbind(pop1,pop1temp) # nrow(pop1)</div><div>rm(pop1temp,pop1)</div><div><br></div></div><div style>.... outras populações....</div><div style><br></div><div style>> population <- ls()</div><div>> samp_size <- c(50,100,150,300,500,1000,3000)</div>

<div>> prev <- c(.05,.1,.2,.3,.5,.75)</div><div>> </div><div>> conditions <- expand.grid(population,samp_size,prev)</div><div>> conditions <- cbind(conditions[,1],substr(conditions[,1],1,4),as.numeric(substr(conditions[,1],6,6))/10,conditions[,2:3])</div>

<div>> names(conditions) <- c('dataset','population','auc','samp_size','prevalence')</div><div>> conditions$dataset <- as.character(conditions$dataset)</div><div><br></div>

</font></div><div style><font color="#000066" face="courier new, monospace"><div>> head(conditions)</div><div>  dataset population auc samp_size prevalence</div><div>1  pop1_6       pop1 0.6        50       0.05</div>
<div>
2  pop1_7       pop1 0.7        50       0.05</div><div>3  pop1_8       pop1 0.8        50       0.05</div><div>4  pop1_9       pop1 0.9        50       0.05</div><div>5  pop2_6       pop2 0.6        50       0.05</div><div>

6  pop2_7       pop2 0.7        50       0.05</div><div><br></div><div style>> setwd('E:/Banco/cutoff/datasets')<br></div><div style><br></div><div style># O problema começa aqui onde eu preciso amostrar de diversos bancos de dados em sequencia armazenados na área de trabalho, mas não consigo fazer isso de forma elegante. então eu acabei usando o parse mas antes preciso salvar o nome do banco no disco, e quando consigo fazer isso vem um aviso que não consigo entender.  </div>

<div><br></div><div style># Aqui deveria começar o loop seguindo as condições do banco conditions.</div><div><br></div><div>> cat(conditions[1,1],file="expr"); dataux <- eval(parse(file="expr"))</div>

<div>Mensagens de aviso perdidas:</div><div>In readLines(file) : linha final incompleta encontrada em 'expr'</div><div>> with <- sample(dataux[which(dataux$reference==1),2],ceiling(conditions[1,4]*conditions[1,5]),T)</div>

<div>> without <- sample(dataux[which(dataux$reference==0),2],conditions[1,4]*(1-conditions[1,5]),T)</div><div>> with <- cbind(reference=1,test=with)</div><div>> without <- cbind(reference=0,test=without)</div>

<div>> tempdata <- data.frame(rbind(with,without))</div><div><br></div><div>> write.csv2(tempdata,paste0(conditions[1,1],'_',conditions[1,4],'_',substr(conditions[1,5],3,4),'.csv'),row.names = F)</div>

<div>> </div></font></div><div style><font color="#000066" face="courier new, monospace"><br></font></div><div style><font color="#000066" face="courier new, monospace"># aqui deveria terminar o loop</font></div><div style>

<br></div><div style>Abraço,</div><div><font color="#000066"><font face="courier new,monospace"><br clear="all"></font></font><div><font face="'courier new', monospace" style="background-color:rgb(255,255,255)" color="#000066">Dr. Pedro Emmanuel A. A. do Brasil</font><div>

<font face="'courier new', monospace" style="background-color:rgb(255,255,255)" color="#000066">Curriculum Lattes: 
<span style="text-align:left"><a href="http://lattes.cnpq.br/6597654894290806" target="_blank">http://lattes.cnpq.br/6597654894290806</a></span> <br>Instituto de Pesquisa Clínica Evandro Chagas<br>Fundação Oswaldo Cruz<br>

Rio de Janeiro - Brasil<br>Av. Brasil 4365, <br>CEP 21040-360,<br>Tel 55 21 3865-9648<br>email: <a href="mailto:pedro.brasil@ipec.fiocruz.br" target="_blank">pedro.brasil@ipec.fiocruz.br</a><br>email: <a href="mailto:emmanuel.brasil@gmail.com" target="_blank">emmanuel.brasil@gmail.com</a><br>

<br>---Apoio aos softwares livres<br><a href="http://www.zotero.org" target="_blank">www.zotero.org</a> - gerenciamento de referências bibliográficas. <br><a href="http://www.broffice.org" target="_blank">www.broffice.org</a> ou <a href="http://www.libreoffice.org/" target="_blank">www.libreoffice.org</a> - textos, planilhas ou apresentações.<br>

<a href="http://www.epidata.dk" target="_blank">www.epidata.dk</a> - entrada de dados.<br><a href="http://www.r-project.org" target="_blank">www.r-project.org</a> - análise de dados.<br><a href="http://www.ubuntu.com" target="_blank">www.ubuntu.com</a> - sistema operacional</font></div>

</div>
</div></div>