On Sat, 16 Apr 2005, Prof Brian Ripley wrote:
Perhaps Fernando will also note that is documented in ?"[.data.frame",
a slightly more appropriate reference than Bill's.
It would be a good idea to read a good account of R's indexing: Bill Venables
and I know of a couple you will find in the R FAQ.
BTW,
sw <- swiss
sw[1,,drop=TRUE] *is* a list (not as claimed, but as documented)
sw[1, ] is a data frame
sw[, 1] is a numeric vector.
I should have pointed out that "[.data.frame" is in the See Also of Bill's
reference.
BTW to Andy: a list is a vector, and Kurt and I recently have been trying
to correct documentation that means `atomic vector' when it says `vector'.
(Long ago lists in R were pairlists and not vectors.)
On Sat, 16 Apr 2005, Liaw, Andy wrote:
Because a data frame can hold different data types (even matrices) in
different variables, one row of it can not be converted to a vector in
general (where all elements need to be of the same type).
Andy
From: Fernando Saldanha
Thanks, it's interesting reading.
I also noticed that
sw[, 1, drop = TRUE] is a vector (coerces to the lowest dimension)
but
sw[1, , drop = TRUE] is a one-row data frame (does not convert it into
a list or vector)
FS
On 4/16/05, Bill.Venables at csiro.au <Bill.Venables at csiro.au> wrote:
and look very carefully at the "drop" argument. For your example
is the first component of the data frame, but
is a data frame consisting of just the first component, as
mathematically fastidious people would expect.
This is a convention, and like most arbitrary conventions
useful most of the time, but some of the time it can be a very nasty
trap. Caveat emptor.
Bill Venables.
-----Original Message-----
From: r-help-bounces at stat.math.ethz.ch
[mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of
Sent: Saturday, 16 April 2005 1:07 PM
To: Submissions to R help
Subject: [R] Getting subsets of a data frame
I was reading in the Reference Manual about Extract.data.frame.
There is a list of examples of expressions using [ and [[, with the
outcomes. I was puzzled by the fact that, if sw is a data
sw[, 1:3]
is also a data frame,
but
sw[, 1]
is just a vector.
Since R has no scalars, it must be the case that 1 and 1:1
[1] TRUE
Then why isn't sw[,1] = sw[, 1:1] a data frame?
FS