[Rd] Lemon drops
Marc Schwartz
MSchwartz at MedAnalytics.com
Tue Mar 15 20:30:00 CET 2005
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 at 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
More information about the R-devel
mailing list