将向量排序为矩阵(9 x 3)

Hul*_*lkD 7 arrays sorting r matrix

目的是创建一个数组/矩阵,对 3 行数字(向量)进行排序,并将数字计数到数组中。

向量(x、y、z)

x <- 1 4 5 6
y <- 2 3 3 4 4 5 5 6 6 7 7 7 9
z <- 2 2 2 3 3 3 3 4 4 4 4 4 5 5 5 5 5 6 7 8 9 9

Run Code Online (Sandbox Code Playgroud)

矩阵/数组(理想输出)

      [,1] [,2] [,3]
 [1,]    1    0    0
 [2,]    0    1    3
 [3,]    0    2    4
 [4,]    1    2    5
 [5,]    1    2    5
 [6,]    1    2    1
 [7,]    0    3    1
 [8,]    0    0    1
 [9,]    0    1    2
Run Code Online (Sandbox Code Playgroud)

我已经尝试过,但只能将向量中的数字直接输入到数组中。

我目前有一个全为“0”的 9x3 矩阵。:(

task_six <- matrix(0, nrow = 9, ncol = 3)
task_six

      [,1] [,2] [,3]
 [1,]    0    0    0
 [2,]    0    0    0
 [3,]    0    0    0
 [4,]    0    0    0
 [5,]    0    0    0
 [6,]    0    0    0
 [7,]    0    0    0
 [8,]    0    0    0
 [9,]    0    0    0

Run Code Online (Sandbox Code Playgroud)

jdo*_*res 10

我们可以用来tabulate计算每个向量的总数,并将sapply计算同时应用于所有三个向量。

x <- c(1, 4, 5, 6)
y <- c(2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 7, 9)
z <- c(2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 7, 8, 9, 9)

max_value <- max(x, y, z)

result <- sapply(list(x, y, z), function(i) tabulate(i, max_value))

      [,1] [,2] [,3]
 [1,]    1    0    0
 [2,]    0    1    3
 [3,]    0    2    4
 [4,]    1    2    5
 [5,]    1    2    5
 [6,]    1    2    1
 [7,]    0    3    1
 [8,]    0    0    1
 [9,]    0    1    2
Run Code Online (Sandbox Code Playgroud)