> I am trying to prepare a bed file to load as accustom track on the > UCSC genome browser. > I have a data frame that looks like the one below. > > x > V1 V2 V3 > 1 chr1 11255 55 > 2 chr1 11320 29 > 3 chr1 11400 45 > 4 chr2 21680 35 > 5 chr2 21750 84 > 6 chr2 21820 29 > 7 chr2 31890 46 > 8 chr3 32100 29 > 9 chr3 52380 29 > 10 chr3 66450 46 > I would like to insert the following 4 lines at the beginning: > browser position chr1:1-10000 > browser hide all > track type=wiggle_0 name=sample description=chr1_sample visibility=full > variableStep chrom=chr1 span=1 > and then insert 2 lines before each chromosome: > track type=wiggle_0 name=sample description=chr2_sample visibility=full > vriableStep chrom=chr2 span=1 > The final result should be tab delimited file that looks like this: > browser position chr1:1-10000 > browser hide all > track type=wiggle_0 name=sample description=chr1_sample visibility=full > variableStep chrom=chr1 span=1 > chr1 11255 55 > chr1 11320 29 > chr1 11400 45 > track type=wiggle_0 name=sample description=chr2_sample visibility=full > variableStep chrom=chr2 span=1 > chr2 21680 35 > chr2 21750 84 > chr2 21820 29 > track type=wiggle_0 name=sample description=chr3_sample visibility=full > variableStep chrom=chr3 span=1 > chr3 32100 29 > chr3 32170 45 > chr3 32240 45
#First write your preamble text to a file preamble <- c("browser position chr1:1-10000", "browser hide all", "track type=wiggle_0 name=sample description=chr1_sample visibility=full", "variableStep chrom=chr1 span=1") write(preamble, "myfile.txt") #Now split your data frame up by the values in V1 x <- data.frame(V1=rep(c("chr1", "chr2", "chr3"),times=c(3,4,3)), V2=c(11255,11320,11400,21680,21750,21820,21890,32100,52380,66450),V3=c(55,29,45,35,84,29,46,29,29,46)) spx <- split(x, x$V1) #Create lines of text to go before each piece of data frame lV1 <- levels(x$V1) maintext <- paste("track type=wiggle_0 name=sample description=", lV1, "_sample visibility=full\nvariableStep chrom=", lV1, " span=1", sep="") #Use a loop to write the pieces to the file for(i in 1: nlevels(x$V1)) { write(maintext[i], "myfile.txt", append=TRUE) write.table(spx[[i]], "myfile.txt", append=TRUE, sep="\t", quote=FALSE, col.names=FALSE, row.names=FALSE) } Regards, Richie. Mathematical Sciences Unit HSL ------------------------------------------------------------------------ ATTENTION: This message contains privileged and confidential inform...{{dropped:20}} ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.