R 将两列合并为一列,删除列名
我有一张像这样的桌子:R 将两列合并为一列,删除列名,r,merge,R,Merge,我有一张像这样的桌子: a n_msi2010 n_msi2011 1 -0.122876 1.818750 2 1.328930 0.931426 3 -0.111653 4.400060 4 1.222900 4.500450 5 3.604160 6.110930 我想将这两列合并为一列以获得(我不想保留列名): 当我使用预制数据时,比如 x <- cbind(c(1, 2, 3), c(4, 5, 6)) colnames(x)<-c("a","b") c
a
n_msi2010 n_msi2011
1 -0.122876 1.818750
2 1.328930 0.931426
3 -0.111653 4.400060
4 1.222900 4.500450
5 3.604160 6.110930
我想将这两列合并为一列以获得(我不想保留列名):
当我使用预制数据时,比如
x <- cbind(c(1, 2, 3), c(4, 5, 6))
colnames(x)<-c("a","b")
c(t(x))
# 1 4 2 5 3 6
c((x))
# 1 2 3 4 5 6
x这不是一种优雅的方式,但它似乎可以将两列或多列合并为一列
n_msi2010 <- 1:5
n_msi2011 <- 6:10
a <- data.frame(n_msi2010, n_msi2011)
vector <- vector()
for (i in 1:dim(a)[2]){
vector <- append(vector, as.vector(a[,i]))
vector
}
您的问题似乎是关于从data.frame
创建列顺序向量还是行顺序向量
在数据框上使用t()
将数据框
转换为矩阵
,在矩阵上使用c()
删除其尺寸
有了这些知识,您可以尝试:
# create a vector of values, column by column
c(as.matrix(a)) # you are missing the `as.matrix` in your current approach
# create a vector of values, row by row
c(t(a)) # you already know this works
获得“逐列”结果的其他方法有:
unlist(a, use.names = FALSE)
stack(a)[, "values"] # add `drop = FALSE` if you want to retain a data.frame
您的“表”可以是data.frame吗?您的x
是一个矩阵。
# create a vector of values, column by column
c(as.matrix(a)) # you are missing the `as.matrix` in your current approach
# create a vector of values, row by row
c(t(a)) # you already know this works
unlist(a, use.names = FALSE)
stack(a)[, "values"] # add `drop = FALSE` if you want to retain a data.frame