将数据帧转换为向量(按行)

Bra*_*ani 63 r vector dataframe r-faq

我有一个像这样的数字条目的数据框

test <- data.frame(x = c(26, 21, 20), y = c(34, 29, 28))
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得以下矢量?

> 26, 34, 21, 29, 20, 28
Run Code Online (Sandbox Code Playgroud)

我能够使用以下内容获得它,但我想应该有一个更优雅的方式

X <- test[1, ]
for (i in 2:dim(test)[ 1 ]){
   X <- cbind(X, test[i, ])
   } 
Run Code Online (Sandbox Code Playgroud)

teu*_*cer 122

你可以试试as.vector(t(test)).请注意,如果您想按列进行,则应使用unlist(test).

  • @verystrongjoe这里有两件事:1)t隐式地将data.frame转换为矩阵,2)矩阵只是一个带有dim属性的特殊向量,as.vector或c将其删除 (5认同)
  • 我不得不使用`as.numeric(t(df))` (2认同)

dou*_*oug 9

c(df$x, df$y)
# returns: 26 21 20 34 29 28
Run Code Online (Sandbox Code Playgroud)

如果特定订单很重要,那么:

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

或者更一般地说:

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
Run Code Online (Sandbox Code Playgroud)