从矩阵创建向量

时间:2021-05-19 02:11:19

标签: r cat

我有一个像这样的 8 x 3 矩阵:

  A B C
1 1 1 1
2 1 1 2
3 1 2 1
4 1 2 2
5 2 1 1
6 2 1 2
7 2 2 1
8 2 2 2

我想从这个矩阵创建一个列向量,如下所示:

cell
111
112
121
122
211
212
221
222

这意味着将所有 3 列转换为单个列。我怎样才能做到这一点?代码是什么?

2 个答案:

答案 0 :(得分:2)

我们可以使用paste

data.frame(cell = as.integer(do.call(paste0, df1)))

-输出

#  cell
#1  111
#2  112
#3  121
#4  122
#5  211
#6  212
#7  221
#8  222

注意:在可重现的示例中,我们使用 data.frame 作为输入。如果它是 matrix,则使用 data.frame 转换为 as.data.frame 并应用相同的代码


或使用 unite

library(tidyr)
library(dplyr)
unite(df1, cell, everything(), sep="") %>%
    type.convert(as.is = TRUE)

数据

df1 <- structure(list(A = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), B = c(1L, 
1L, 2L, 2L, 1L, 1L, 2L, 2L), C = c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 
2L)), class = "data.frame", row.names = c("1", "2", "3", "4", 
"5", "6", "7", "8"))

答案 1 :(得分:0)

使用矩阵乘法如下:

m %*% 10^(2:0)

给予:

  [,1]
1  111
2  112
3  121
4  122
5  211
6  212
7  221
8  222

注意

m 以可重现的形式:

Lines <- "
  A B C
1 1 1 1
2 1 1 2
3 1 2 1
4 1 2 2
5 2 1 1
6 2 1 2
7 2 2 1
8 2 2 2"
m <- as.matrix(read.table(text = Lines))