[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