[R] inserting text lines in a dat frame

Richard.Cotton at hsl.gov.uk Richard.Cotton at hsl.gov.uk
Wed Feb 6 11:22:16 CET 2008


>  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}}



More information about the R-help mailing list