as.character and a formula
On Tue, 2005-08-16 at 21:44 +0200, Peter Dalgaard wrote:
Gavin Simpson <gavin.simpson at ucl.ac.uk> writes:
Dear list, given this formula:
fmla <- formula(y1 ~ spp1 + spp2 + spp3 + spp5) fmla[[3]]
spp1 + spp2 + spp3 + spp5 is this the intended behaviour of as.character:
as.character(fmla[[3]])
[1] "+" "spp1 + spp2 + spp3" "spp5"
Yes.
Thanks Uwe, Brian and Peter for setting me straight. Being unobservant, forgetful and stupid, all in one day, is some going, even for me. All the best, Gav
? Where does the extra "+" come from?
What extra "+" ? There are three of them in fmla[[3]] and three in as.character(....). as.character of an object of mode call is obtained by converting it to a list and deparsing each term (modulo some details regarding backquotes). This is somewhat peculiar, but quite a bit of legacy code is depending on it. Things like testing for as.character(e)[1] == "~"
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~% Gavin Simpson [T] +44 (0)20 7679 5522 ENSIS Research Fellow [F] +44 (0)20 7679 7565 ENSIS Ltd. & ECRC [E] gavin.simpsonATNOSPAMucl.ac.uk UCL Department of Geography [W] http://www.ucl.ac.uk/~ucfagls/cv/ 26 Bedford Way [W] http://www.ucl.ac.uk/~ucfagls/ London. WC1H 0AP. %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%