Re: [Rd] binary string conversion to a vector (PR#14120)

From: Prof Brian Ripley <ripley_at_stats.ox.ac.uk>
Date: Wed, 09 Dec 2009 11:23:55 +0000 (GMT)

On Wed, 9 Dec 2009, brglez_at_ncsu.edu wrote:

> Full_Name: Franc Brglez
> Version: R 2.9.1 GUI 1.28 Tiger build 32-bit (5444)
> OS: MacOSX -- 10.6.2
> Submission from: (NULL) (24.148.163.114)
>
>
> I am demonstrating what may be a bug or my lack of experience. Please review as
> it would help to hear from someone.
> MANY THANKS -- Franc Brglez

Please review the section 'BUGS' in the FAQ to work out why you have just annoyed the developers who will have to clear up after you. You were asked only to use R-bugs when you 'know for certain', and only to report on current versions of R.

You started xvector as NULL: concatentating NULL and an object of noquote dispatches on the first argument, NULL, and uses the default method. So xvector correctly does not have class "noquote". A simple way to do this would be

binS2binV <- function(string="0001101", sep="")

     noquote(strsplit(string, sep)[[1]])

or replace noquote by as.integer.

Note too the cat() and paste() print things differently, so using cat() to debug is not telling you anything useful about the eventual output.

>
> The function "binS2binV" returns what I consider a wrong value -- see the
> terminal output
>
> binS2binV = function(string="0001101", sep="")
> # this procedure is expected to convert a binary string to a binary vector ...
> # but does it?? Why do we get a vector with quoted binary values??
> {
> qlist = strsplit(string, sep)
> qvector = qlist[[1]]
> cat("\n string=", string)
> cat("\n qvector=", qvector)
> n = length(qvector) ; xvector = NULL
> for (i in 1:n) {
> tmp = noquote(qvector[i])
> cat("\n", i,", tmp=", tmp)
> xvector = c(xvector, tmp)
> cat("\n", i,", xvector=", xvector)
> }
> cat("\n")
> return(xvector)
> }
>
>> print(binS2binV("10101100"))
>
> string= 10101100
> qvector= 1 0 1 0 1 1 0 0
> 1 , tmp= 1
> 1 , xvector= 1
> 2 , tmp= 0
> 2 , xvector= 1 0
> 3 , tmp= 1
> 3 , xvector= 1 0 1
> 4 , tmp= 0
> 4 , xvector= 1 0 1 0
> 5 , tmp= 1
> 5 , xvector= 1 0 1 0 1
> 6 , tmp= 1
> 6 , xvector= 1 0 1 0 1 1
> 7 , tmp= 0
> 7 , xvector= 1 0 1 0 1 1 0
> 8 , tmp= 0
> 8 , xvector= 1 0 1 0 1 1 0 0
> [1] "1" "0" "1" "0" "1" "1" "0" "0" <== what I want is "unquoted" binary
> values
>
> on the other hand, similar, NOT-THE-SAME but related, "conversions" are working,
> e.g.
> # seq = "1 0 0 1 0"
> #> seq
> # [1] "1 0 0 1 0"
> #> strsplit(paste(seq), " ")
> # [[1]]
> # [1] "1" "0" "0" "1" "0"
> #> paste(strsplit(paste(seq), " ")[[1]], collapse="")
> # [1] "10010"
> #
> #> seq=c(0,0,0,1,1,0,1)
> #> seq
> # [1] 0 0 0 1 1 0 1
> #> paste(strsplit(paste(seq), " "), collapse="")
> # [1] "0001101"
>
> ______________________________________________
> R-devel_at_r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

-- 
Brian D. Ripley,                  ripley_at_stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Wed 09 Dec 2009 - 11:27:39 GMT

This archive was generated by hypermail 2.2.0 : Wed 09 Dec 2009 - 13:51:01 GMT