[R] data.frame into vector
Marc Schwartz
MSchwartz at MedAnalytics.com
Tue Nov 23 19:04:17 CET 2004
On Tue, 2004-11-23 at 16:27 +0000, Tiago R Magalhaes wrote:
> Hi
>
> I want to extract a row from a data.frame but I want that object to
> be a vector . After trying some different ways I end up always with a
> data.frame or with the wrong vector. Any pointers?
>
> x <- data.frame(a = factor(c('a',2,'b')), b = c(4,5,6))
> I want to get
> "a" "4"
>
> I tried:
>
> as.vector(x[1,])
> a b
> 1 a 4
> (resulting in a data.frame even after in my mind having coerced it
> into a vector!)
>
> as.vector(c[1,], numeric='character')
> [1] "2" "4"
> (almost what I want, except that "2" instead of "a" - I guess this as
> to do with levels and factors)
>
> Thanks for any help
Part of the problem that you are having, as you seem to pick up, is that
the first column in 'x' is a factor and you need to coerce it to a
character.
If you review the help for as.matrix, you will note in the details
section:
"as.matrix is a generic function. The method for data frames will
convert any non-numeric/complex column into a character vector using
format and so return a character matrix, except that all-logical data
frames will be coerced to a logical matrix."
Thus, one approach is:
> as.matrix(x)[1, ]
a b
"a" "4"
This coerces the data frame to a character matrix, which is then
subsetted to the first row only.
HTH,
Marc Schwartz
More information about the R-help
mailing list