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 ~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~