I find the following ways in which
R attempts to preserve names to
be puzzling and often annoying
x = c(a=1,b=2,c=3)
c(d=x["a"],e=x["b"])
# d.a e.b
# 1 2
list(d=x["a"],e=x["b"])
# $d
# a
# 1
# $e
# b
# 2
(a real-world example: I fit
some parameters with mle(), ending
up with a named vector of coefficients,
and then want to use some or all of
those coefficients as input to another
mle() call -- I have to remove the
names manually.)
Can anyone suggest why this happens/
why it is a good design/whether there
are simple workarounds?
sincerely
Ben Bolker
You want the individual elements, not a subvector, thus you need to use [[ rather than [: c(d = x[["a"]], e = x[["b"]]) Compare: str(x[["a"]]) and str(x["a"]) On 12/5/05, Ben Bolker <bolker at zoo.ufl.edu> wrote:> > I find the following ways in which > R attempts to preserve names to > be puzzling and often annoying > > x = c(a=1,b=2,c=3) > c(d=x["a"],e=x["b"]) > > # d.a e.b > # 1 2 > list(d=x["a"],e=x["b"]) > > # $d > # a > # 1 > > # $e > # b > # 2 > > (a real-world example: I fit > some parameters with mle(), ending > up with a named vector of coefficients, > and then want to use some or all of > those coefficients as input to another > mle() call -- I have to remove the > names manually.) > > Can anyone suggest why this happens/ > why it is a good design/whether there > are simple workarounds? > > sincerely > Ben Bolker > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html >
On Tue, 06-Dec-2005 at 04:14AM +0000, Ben Bolker wrote:
|>
|> I find the following ways in which
|> R attempts to preserve names to
|> be puzzling and often annoying
|>
|> x = c(a=1,b=2,c=3)
|> c(d=x["a"],e=x["b"])
|>
|> # d.a e.b
|> # 1 2
|> list(d=x["a"],e=x["b"])
|>
|> # $d
|> # a
|> # 1
|>
|> # $e
|> # b
|> # 2
|>
|> (a real-world example: I fit
|> some parameters with mle(), ending
|> up with a named vector of coefficients,
|> and then want to use some or all of
|> those coefficients as input to another
|> mle() call -- I have to remove the
|> names manually.)
|>
|> Can anyone suggest why this happens/
|> why it is a good design/whether there
|> are simple workarounds?
Makes perfect sense to me. It's good to know where elements of lists
came from.
For dealing with the vector, you could do this:
xv <- c(x["a"],x["b"])
names(xv) <- c("d", "e")
Not so simple with the list
list(d=as.vector(x["a"]),e=as.vector(x["b"]))
HTH
--
Patrick Connolly
HortResearch
Mt Albert
Auckland
New Zealand
Ph: +64-9 815 4200 x 7188
~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~
I have the world`s largest collection of seashells. I keep it on all
the beaches of the world ... Perhaps you`ve seen it. ---Steven Wright
~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~