<div dir="ltr"><div>Senhores, bom dia!</div><div><br></div><div>Talvez seja melhor ler diretamente a partir do arquivo '.gz'...</div><div><br></div><div>O código abaixo está testado e aparentemente atende ao que se pede. Está comentado com os principais resultados. Peço avaliar.</div>
<div><br></div><div><br></div><div><font face="courier new, monospace">### <BEGIN></font></div><div><font face="courier new, monospace">setwd("C:/LAB/Tmp"); getwd() ### alterar!!!</font></div><div><font face="courier new, monospace">dURL   <- "<a href="https://www.crops.org/publications/tpg/supplements/5/tpg12-06-0006-dataset-s2.gz">https://www.crops.org/publications/tpg/supplements/5/tpg12-06-0006-dataset-s2.gz</a>"</font></div>
<div><font face="courier new, monospace">gzFile <- strsplit(dURL, "/")[[1]][8]; gzFile</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">### fazendo o download</font></div>
<div><font face="courier new, monospace">download.file(dURL, gzFile, mode='wb') </font></div><div><font face="courier new, monospace">### downloaded 4.3 Mb</font></div><div><font face="courier new, monospace"><br>
</font></div><div><font face="courier new, monospace">### uma vez baixados, os arquivos comprimidos com bzip2, xvz, ou gzip podem </font></div><div><font face="courier new, monospace">### ser lidos diretamente com read.table()</font></div>
<div><font face="courier new, monospace">GBS <- read.table(gzFile, sep=',', header=T, stringsAsFactors=F)</font></div><div><font face="courier new, monospace">dim(GBS)</font></div><div><font face="courier new, monospace">### [1] 41371   258</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">parse.GBS <- function(x) {</font></div><div><font face="courier new, monospace">   unique.x <- unique(x)</font></div>
<div><font face="courier new, monospace">   alleles <- setdiff(unique.x,union("H","N"))</font></div><div><font face="courier new, monospace">   y <- rep(0,length(x))</font></div><div><font face="courier new, monospace">   y[which(x==alleles[1])] <- -1</font></div>
<div><font face="courier new, monospace">   y[which(x==alleles[2])] <- 1</font></div><div><font face="courier new, monospace">   y[which(x=="N")] <- NA</font></div><div><font face="courier new, monospace">   return(y)</font></div>
<div><font face="courier new, monospace">}</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">X <- apply(GBS[,-c(1:3)],1,parse.GBS)</font></div><div><font face="courier new, monospace">dim(X)</font></div>
<div><font face="courier new, monospace">### [1]   255 41371</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">frac.missing <- apply(X,2,function(z){length(which(<a href="http://is.na">is.na</a>(z)))/length(z)})</font></div>
<div><font face="courier new, monospace">length(which(frac.missing<0.5))</font></div><div><font face="courier new, monospace">### [1] 16317</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">hist(frac.missing)</font></div>
<div><font face="courier new, monospace">### OK!!!</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">### <END></font></div><div class="gmail_extra"><font face="courier new, monospace"><br>
</font></div><div class="gmail_extra"><font face="courier new, monospace">Atte.,</font></div><div class="gmail_extra"><font face="courier new, monospace"><br clear="all"></font><div><div dir="ltr"><font face="courier new, monospace">Éder Comunello <<a href="mailto:comunello.eder@gmail.com" target="_blank">c</a><a href="mailto:omunello.eder@gmail.com" target="_blank">omunello.eder@gmail.com</a>> <br>
Dourados, MS - [22 16.5'S, 54 49'W]<br></font></div></div>
<br></div></div>