[Rd] formals assignment now strips attributres
Peter Dalgaard
p.dalgaard at biostat.ku.dk
Sat Apr 30 14:18:08 CEST 2005
Patrick Burns <pburns at pburns.seanet.com> writes:
> The assignment form of 'formals' strips attributes (or something close
> to that) from the values in the list. This wasn't intentional, was it?
>
> The current behavior (2.0.0 through 2.1.0 on Windows at least):
>
> > fjj <- function() x
> > formals(fjj) <- list(x=c(a=2, b=4))
> > fjj
> function (x = c(2, 4))
> x
>
>
> Previous behavior:
>
> > fjj <- function() x
> > formals(fjj) <- list(x=c(a=2, b=4))
> > fjj
> function (x = structure(c(2, 4), .Names = c("a", "b")))
> x
It is only a buglet in deparsing:
> formals(fjj)
$x
a b
2 4
> fjj()
a b
2 4
> as.list(fjj)
$x
a b
2 4
[[2]]
x
BTW, why is it that we cannot deparse named vectors nicely?
> deparse(c(a=1,b=2))
[1] "structure(c(1, 2), .Names = c(\"a\", \"b\"))"
> deparse(as.list(c(a=1,b=2)))
[1] "structure(list(a = 1, b = 2), .Names = c(\"a\", \"b\"))"
Notice also that fjj constructed as above is not identical to
function (x = c(a = 1, b = 2))
x
since the default expression is a vector in one case and a call to "c"
in the other. This is part of the problem; you're trying to deparse
something that cannot be the result of parsing. (The existence of such
objects is a generic problem in the R (and S) language).
--
O__ ---- Peter Dalgaard Blegdamsvej 3
c/ /'_ --- Dept. of Biostatistics 2200 Cph. N
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
More information about the R-devel
mailing list