Suharto Anggono Suharto Anggono
2012-Sep-03 09:06 UTC
[Rd] Typo (?) in 'aggregate.formula'
In the code for 'aggregate.formula', there is if (as.character(formula[[2L]] == ".")) I believe that it is meant to be if (as.character(formula[[2L]]) == ".") However, if (as.character(formula[[2L]] == ".")) gives the expected result. Tracing: - formula[[2L]] == "." is equivalent to as.character(formula[[2L]]) == "." From the help page for '==' (Comparison), "Language objects such as symbols and calls are deparsed to character strings before comparison." - By applying 'as.character', the TRUE/FALSE result of formula[[2L]] == "." is converted to character, becomes "TRUE"/"FALSE". - Then, for 'if', it is implicitly converted back to logical.> sessionInfo()R version 2.14.2 (2012-02-29) Platform: i386-pc-mingw32/i386 (32-bit) locale: [1] LC_COLLATE=English_United States.1252 [2] LC_CTYPE=English_United States.1252 [3] LC_MONETARY=English_United States.1252 [4] LC_NUMERIC=C [5] LC_TIME=English_United States.1252 attached base packages: [1] stats graphics grDevices utils datasets methods base I see that, in R 2.15.1, the code for 'aggregate.formula' is still the same.
This (and more) was fixed in r-devel back in May. Did you actually get bitten by this? (The code has been there for years, so it hasn't been slated for R-patched.) -pd On Sep 3, 2012, at 11:06 , Suharto Anggono Suharto Anggono wrote:> In the code for 'aggregate.formula', there is > if (as.character(formula[[2L]] == ".")) > I believe that it is meant to be > if (as.character(formula[[2L]]) == ".") > > However, > if (as.character(formula[[2L]] == ".")) > gives the expected result. > Tracing: > - formula[[2L]] == "." > is equivalent to > as.character(formula[[2L]]) == "." > From the help page for '==' (Comparison), "Language objects such as symbols and calls are deparsed to character strings before comparison." > - By applying 'as.character', the TRUE/FALSE result of > formula[[2L]] == "." > is converted to character, becomes "TRUE"/"FALSE". > - Then, for 'if', it is implicitly converted back to logical. > > >> sessionInfo() > R version 2.14.2 (2012-02-29) > Platform: i386-pc-mingw32/i386 (32-bit) > > locale: > [1] LC_COLLATE=English_United States.1252 > [2] LC_CTYPE=English_United States.1252 > [3] LC_MONETARY=English_United States.1252 > [4] LC_NUMERIC=C > [5] LC_TIME=English_United States.1252 > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > > I see that, in R 2.15.1, the code for 'aggregate.formula' is still the same. > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel-- Peter Dalgaard, Professor Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com