Преобразовать кадр данных в вектор (по строкам) - PullRequest
59 голосов
/ 30 марта 2010

У меня есть фрейм данных с такими числовыми записями, как этот

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

Как мне получить следующий вектор?

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

Я смог получить его, используя следующее, но я думаю, что должен быть более элегантный способ

X <- test[1, ]
for (i in 2:dim(test)[ 1 ]){
   X <- cbind(X, test[i, ])
   } 

Ответы [ 3 ]

113 голосов
/ 30 марта 2010

Вы можете попробовать as.vector(t(test)). Обратите внимание, что если вы хотите сделать это по столбцам, вы должны использовать unlist(test).

9 голосов
/ 30 марта 2010
c(df$x, df$y)
# returns: 26 21 20 34 29 28

если важен конкретный заказ, то:

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

Или, в более общем смысле:

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
0 голосов
/ 03 июля 2019

Вы можете попробовать это, чтобы получить свою комбинацию

as.numeric (rbind (тест $ x, тест $ y))

Возврат -> 26, 34, 21, 29, 20, 28

...