Re: [Rd] Lemon drops

From: Marc Schwartz <MSchwartz_at_medanalytics.com>
Date: Tue 15 Mar 2005 - 19:30:00 GMT

On Tue, 2005-03-15 at 20:05 +0100, Achim Zeileis wrote:
> On 15 Mar 2005 18:26:46 +0100 Peter Dalgaard wrote:
>
> > Marc Schwartz <MSchwartz@MedAnalytics.com> writes:
> >
> > > On Tue, 2005-03-15 at 18:05 +0100, Peter Dalgaard wrote:
> > > > I bumped into the following situation:
> > > >
> > > > Browse[1]> coef
> > > > deg0NA deg4NA deg8NA deg0NP deg4NP deg8NP
> > > > (Intercept) 462 510 528 492 660 762
> > > > Browse[1]> coef[,1]
> > > > [1] 462
> > > > Browse[1]> coef[,1,drop=F]
> > > > deg0NA
> > > > (Intercept) 462
> > > >
> > > > where I really wanted neither, but
> > > >
> > > > (Intercept)
> > > > 462
> > > >
> > > > Anyone happen to know a neat way out of the conundrum?
> > > >
> > > > I can think of
> > > >
> > > > rowSums(coef[,1,drop=F])
> > > >
> > > > or of course
> > > >
> > > > val <- coef[,1]
> > > > names(val) <- rownames(x))
> > > >
> > > > but the first one is sneaky and the second gets a bit tedious...
> > >
> > > Peter,
> > >
> > > How about something like this:
> > >
> > > > x
> > > deg0NA deg4NA deg8NA deg0NP deg4NP deg8NP
> > > (Intercept) 462 510 528 492 660 762
> > > IV1 1 2 3 4 5 6
> > >
> > >
> > > > x[1]
> > > (Intercept)
> > > 462
> > >
> > > > str(x[1])
> > > Named num 462
> > > - attr(*, "names")= chr "(Intercept)"
> > >
> > >
> > > Does that work or am I missing something?
> >
> > You're missing the context. What I really need is something that will
> > extract a column of a matrix as a vector in the usual way, but will
> > not get confused if there is only one row.
>
> Maybe:
> coef[,1,drop=FALSE][1:nrow(coef)]
> ?
> Z

Hmmmm....interesting.

At the risk of this degenerating into an obfuscated R contest, Achim's post just gave me an idea to build on my original thought:

# With one row:
> x

            deg0NA deg4NA deg8NA deg0NP deg4NP deg8NP (Intercept) 462 510 528 492 660 762

> apply(t(x)[1, , drop = FALSE], 2, FUN = "[")
(Intercept)

        462

# Now with two rows:
> x2

            deg0NA deg4NA deg8NA deg0NP deg4NP deg8NP (Intercept) 462 510 528 492 660 762 IV1 1 2 3 4 5 6

> apply(t(x2)[1, , drop = FALSE], 2, FUN = "[")

(Intercept)         IV1
        462           1


Marc



R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed Mar 16 06:44:18 2005

This archive was generated by hypermail 2.1.8 : Mon 24 Oct 2005 - 22:26:30 GMT