Pfaff, Bernhard Dr.
2006-Oct-27 10:46 UTC
[Rd] all.names() and all.vars(): sorting order of functions' return vector
Dear list-subscriber, in the process of writing a general code snippet to extract coefficients in an expression (in the example below: 0.5 and -0.7), I stumbled over the following peculiar (at least peculiar to me:-) ) sorting behaviour of the function all.names():> expr1 <- expression(x3 = 0.5 * x1 - 0.7 * x2) > all.names(expr1)[1] "-" "*" "x1" "*" "x2"> all.vars(expr1)[1] "x1" "x2"> expr2 <- expression(x3 <- 0.5 * x1 - 0.7 * x2) > all.names(expr2)[1] "<-" "x3" "-" "*" "x1" "*" "x2"> all.vars(expr2)[1] "x3" "x1" "x2"> expr3 <- expression(x3 ~ 0.5 * x1 - 0.7 * x2) > all.names(expr3)[1] "~" "x3" "-" "*" "x1" "*" "x2"> all.vars(expr3)[1] "x3" "x1" "x2">For all.names(expr2) and all.names(expr3) I would expect something like: [1] "x3" "<-" "*" "x1" "-" "*" "x2" [1] "x3" "~" "*" "x1" "-" "*" "x2" To which kind of rule is the sorting order in the returned character vector produced? Any help or pointers is much appreciated. Best, Bernhard> sessionInfo()R version 2.5.0 Under development (unstable) (2006-10-10 r39600) i386-pc-mingw32 locale: LC_COLLATE=German_Germany.1252;LC_CTYPE=German_Germany.1252;LC_MONETARYGerman_Germany.1252;LC_NUMERIC=C;LC_TIME=German_Germany.1252 attached base packages: [1] "methods" "stats" "graphics" "grDevices" "datasets" "utils" [7] "base" other attached packages: nlme fortunes "3.1-77" "1.3-2">***************************************************************** Confidentiality Note: The information contained in this mess...{{dropped}}
Gabor Grothendieck
2006-Oct-27 11:21 UTC
[Rd] all.names() and all.vars(): sorting order of functions' return vector
Rewrite expr2 <- expression(x3 <- 0.5 * x1 - 0.7 * x2) like this: expression(`<-`(x3, `-`(`*`(0.5, x1), `*`(0.7, x2)))) and it becomes clear. On 10/27/06, Pfaff, Bernhard Dr. <Bernhard_Pfaff at fra.invesco.com> wrote:> Dear list-subscriber, > > in the process of writing a general code snippet to extract coefficients > in an expression (in the example below: 0.5 and -0.7), I stumbled over > the following peculiar (at least peculiar to me:-) ) sorting behaviour > of the function all.names(): > > > expr1 <- expression(x3 = 0.5 * x1 - 0.7 * x2) > > all.names(expr1) > [1] "-" "*" "x1" "*" "x2" > > all.vars(expr1) > [1] "x1" "x2" > > expr2 <- expression(x3 <- 0.5 * x1 - 0.7 * x2) > > all.names(expr2) > [1] "<-" "x3" "-" "*" "x1" "*" "x2" > > all.vars(expr2) > [1] "x3" "x1" "x2" > > expr3 <- expression(x3 ~ 0.5 * x1 - 0.7 * x2) > > all.names(expr3) > [1] "~" "x3" "-" "*" "x1" "*" "x2" > > all.vars(expr3) > [1] "x3" "x1" "x2" > > > > For all.names(expr2) and all.names(expr3) I would expect something like: > > [1] "x3" "<-" "*" "x1" "-" "*" "x2" > > [1] "x3" "~" "*" "x1" "-" "*" "x2" > > To which kind of rule is the sorting order in the returned character > vector produced? Any help or pointers is much appreciated. > > Best, > Bernhard > > > > sessionInfo() > R version 2.5.0 Under development (unstable) (2006-10-10 r39600) > i386-pc-mingw32 > > locale: > LC_COLLATE=German_Germany.1252;LC_CTYPE=German_Germany.1252;LC_MONETARY> German_Germany.1252;LC_NUMERIC=C;LC_TIME=German_Germany.1252 > > attached base packages: > [1] "methods" "stats" "graphics" "grDevices" "datasets" "utils" > > [7] "base" > > other attached packages: > nlme fortunes > "3.1-77" "1.3-2" > > > ***************************************************************** > Confidentiality Note: The information contained in this mess...{{dropped}} > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >
Gabor Grothendieck
2006-Oct-27 11:31 UTC
[Rd] all.names() and all.vars(): sorting order of functions' return vector
Rewrite expr2 <- expression(x3 <- 0.5 * x1 - 0.7 * x2) like this: expr2 <- expression(`<-`(x3, `-`(`*`(0.5, x1), `*`(0.7, x2)))) and it becomes clear. On 10/27/06, Pfaff, Bernhard Dr. <Bernhard_Pfaff at fra.invesco.com> wrote:> Dear list-subscriber, > > in the process of writing a general code snippet to extract coefficients > in an expression (in the example below: 0.5 and -0.7), I stumbled over > the following peculiar (at least peculiar to me:-) ) sorting behaviour > of the function all.names(): > > > expr1 <- expression(x3 = 0.5 * x1 - 0.7 * x2) > > all.names(expr1) > [1] "-" "*" "x1" "*" "x2" > > all.vars(expr1) > [1] "x1" "x2" > > expr2 <- expression(x3 <- 0.5 * x1 - 0.7 * x2) > > all.names(expr2) > [1] "<-" "x3" "-" "*" "x1" "*" "x2" > > all.vars(expr2) > [1] "x3" "x1" "x2" > > expr3 <- expression(x3 ~ 0.5 * x1 - 0.7 * x2) > > all.names(expr3) > [1] "~" "x3" "-" "*" "x1" "*" "x2" > > all.vars(expr3) > [1] "x3" "x1" "x2" > > > > For all.names(expr2) and all.names(expr3) I would expect something like: > > [1] "x3" "<-" "*" "x1" "-" "*" "x2" > > [1] "x3" "~" "*" "x1" "-" "*" "x2" > > To which kind of rule is the sorting order in the returned character > vector produced? Any help or pointers is much appreciated. > > Best, > Bernhard > > > > sessionInfo() > R version 2.5.0 Under development (unstable) (2006-10-10 r39600) > i386-pc-mingw32 > > locale: > LC_COLLATE=German_Germany.1252;LC_CTYPE=German_Germany.1252;LC_MONETARY> German_Germany.1252;LC_NUMERIC=C;LC_TIME=German_Germany.1252 > > attached base packages: > [1] "methods" "stats" "graphics" "grDevices" "datasets" "utils" > > [7] "base" > > other attached packages: > nlme fortunes > "3.1-77" "1.3-2" > > > ***************************************************************** > Confidentiality Note: The information contained in this mess...{{dropped}} > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >