[R] looping in R

Duncan Murdoch murdoch.duncan at gmail.com
Wed Apr 2 22:35:57 CEST 2014


On 02/04/2014, 3:15 PM, Abugri James wrote:
> I ran the following loop on my SNP data and got an error message as
> indicated

I would assume that the error message is accurate: 
as.character(current[1, "gene_old"]) has length zero.  You'll need to 
debug why that happened.

Duncan Murdoch

> for (i in genenames){
> +   current <- fst1[which(fst1$Gene == i),]
> +   num <- nrow(current)
> +   fst <- max(current$fst)
> +   position <- mean(current$pos)
> +   nposition <- mean(current$newpos)
> +   numhigh <- nrow(current[which(current$fst > threshold),])
> +   colors <- mean(current$colors)
> +   output <- matrix(NA,nrow=1,ncol=8)
> +   numthresh <- paste("# SNPs > Fst = ", threshold, sep="")
> +   colnames(output) <- c("gene", "gene_old", "pos", "newpos", "# Snps",
> numthresh, "Max.Fst", "colors")
> +   output[1,1] <- i
> +   output[1,2] <- as.character(current[1, "gene_old"])
> +   output[1,3] <- position
> +   output[1,4] <- nposition
> +   output[1,5] <- num
> +   output[1,6] <- numhigh
> +   output[1,7] <- fst
> +   output[1,8] <- colors
> +   maxfstgene <- rbind(maxfstgene, output)
> + }
> Error in output[1, 2] <- as.character(current[1, "gene_old"]) :
>    replacement has length zero
> In addition: Warning message:
> In mean.default(current$pos) :
>    argument is not numeric or logical: returning NA
> --
>




More information about the R-help mailing list