我有一个带有这样的数字条目的数据框
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, ])
}
Answers:
你可以试试看as.vector(t(test))
。请注意,如果要按列进行操作,则应使用unlist(test)
。
as.numeric(t(df))
unlist
如果列具有不同的类,则不起作用。unlist(data.frame(a= 1:10, b= letters[1:10]))
例如,参见。我最终使用了do.call("c", lapply(data.frame(a= 1:10, b= letters[1:10]), function(i) as.character(i)))
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
您可以尝试以下方法以获得组合:
as.numeric(rbind(test$x, test$y))
它将返回:
26, 34, 21, 29, 20, 28