从矩阵创建向量
creating a vector from a matrix
我有一个像这样的 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 列转换为一列。我怎样才能做到这一点?代码是什么?
我们可以使用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
,请使用 as.data.frame
转换为 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"))
使用矩阵乘法如下:
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))
我有一个像这样的 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 列转换为一列。我怎样才能做到这一点?代码是什么?
我们可以使用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
,请使用 as.data.frame
转换为 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"))
使用矩阵乘法如下:
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))