views:

103

answers:

2

I have a dataframe with numeric entries like this one

test <- data.frame(x=c(26,21,20),y=c(34,29,28))

How can I get the following vector?

> 26,34,21,29,20,28

I was able to get it using the following, but I guess there should be a much more elegant way

X <- test[1,]
for (i in 2:dim(test)[1]){
X <- cbind(X,test[i,])
} 
A: 
c(df$x, df$y)
# returns: 26 21 20 34 29 28

if the particular order is important then:

M = as.matrix(df)
c(m[1,], c[2,], c[3,])
# returns 26 34 21 29 20 28 

Or more generally:

m = as.matrix(df)
q = c()
for (i in seq(1:nrow(m))){
  q = c(q, m[i,])
}

# returns 26 34 21 29 20 28
doug
Yes, order does matter, I want convertion by rows. And the rows are many more than 3. So it would be better if you could transform this to a loop or use a vectorized function. Thank you.
Brani
trivial step; edited answer accordingly.
doug
+8  A: 

You can try as.vector(t(test)).Please note that, if you want to have by columns you should use as.vector(as.matrix(test)) (t implicitly converts to a matrix).

teucer
`c(t(test))` works too.
Marek