Try this:
## 1 map <- list(A = '00', C = '01', G = '10', T = '11') myStr <- 'GATTA' paste(map[unlist(strsplit(myStr, NULL))], collapse = "") ## 2 cod <- "1000111100" library(gsubfn) strapply(cod, '[0-9]{2}') names(map)[match(unlist(strapply(cod, '[0-9]{2}')), map)] On Fri, Jan 9, 2009 at 1:50 PM, Gundala Viswanath <gunda...@gmail.com>wrote: > Dear all, > > Does R has any function/package that can pack > and unpack string into bit size? > > The reason I want to do this in R is that R > has much more native statistical function than Perl. > > Yet the data I need to process is so large that it > required me to compress it into smaller unit -> process it -> finally > recover them back again into string with new information. > > In Perl the implementation will look like this: > I wonder how can this be implemented in R. > > __BEGIN__ > my %charmap = ( > A => '00', > C => '01', > G => '10', > T => '11', > ); > > my %digmap = ( > '00' => "A", > '01' => "C", > '10' => "G", > '11' => "T", > ); > > my $string = 'GATTA'; > $string =~ s/(.)/$charmap{$1}/ge; > > my $compressed = pack 'b*', $string; > > print "COMP: $compressed\n"; > printf "%d bytes\n", length $compressed; > > my @data; > > # Store the compressed bit into array > push @data, $compressed; > > # process the array > foreach my $dat ( @data ) { > > my $decompressed = unpack 'b*', $dat; > $decompressed =~ s/(..)/$digmap{$1}/ge; > > print "$decompressed\n"; > # or do further processing on $dat > } > __END__ > > > - Gundala Viswanath > Jakarta - Indonesia > > ______________________________________________ > 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. > -- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O [[alternative HTML version deleted]]
______________________________________________ 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.