我有兩個資料框,matrix A
并且matrix B
,結構像
matrix A
[,1] [,2] [,3] [,4]
[1,] 121 114 117 200
[2,] 312 215 78 211
[3,] 413 121 719 117
matrix B
[,1] [,2] [,3] [,4]
[1,] 120 119 112 220
[2,] 0 7 1 2
[3,] 412 111 713 113
我想創建一個新的資料框串列,每個子串列都是來自兩個矩陣的匹配行值。例如,串列中的第一個新資料框將是
matrix C1
[,1] [,2] [,3] [,4]
[1,] 121 114 117 200
[2,] 0 7 1 2
C1 中的第 1 行是矩陣 A 的第 1 行,這個新矩陣中的第 2 行是矩陣 B 的第 1 行。矩陣 C2 將是矩陣 A 和 B 的第 2 行,依此類推。
我知道我必須rbind()
在某一時刻使用,但我對如何獲得所需的輸出感到迷茫?
uj5u.com熱心網友回復:
與BaseR
,
lapply(1:nrow(matrixA), function(x) rbind(matrixA[x,],matrixB[x,]))
給,
[[1]]
[,1] [,2] [,3]
[1,] 52.81736 68.83760 92.26946
[2,] 49.17765 59.02276 15.89793
[[2]]
[,1] [,2] [,3]
[1,] 48.21500 35.82741 11.52465
[2,] 33.05838 23.17105 70.05778
[[3]]
[,1] [,2] [,3]
[1,] 52.93969 84.12350 21.44636
[2,] 47.69968 73.66894 27.14668
假資料:
matrixA <- matrix(runif(9,1,100),3)
matrixB <- matrix(runif(9,1,100),3)
uj5u.com熱心網友回復:
您可以將它們放在一個陣列中并使用aperm
.
起始資料
matrixA <- matrix(runif(9,1,100),3)
matrixB <- matrix(runif(9,1,100),3)
list(matrixA, matrixB)
#> [[1]]
#> [,1] [,2] [,3]
#> [1,] 7.726875 88.77164 32.74513
#> [2,] 60.005675 26.94784 68.45881
#> [3,] 43.514952 94.43019 21.05740
#>
#> [[2]]
#> [,1] [,2] [,3]
#> [1,] 13.48753 65.43023 47.474468
#> [2,] 48.18658 25.19455 16.581541
#> [3,] 60.94665 58.46271 9.016365
制作一個陣列和 aperm
list(matrixA, matrixB) |>
simplify2array() |>
aperm()
#> , , 1
#>
#> [,1] [,2] [,3]
#> [1,] 7.726875 88.77164 32.74513
#> [2,] 13.487534 65.43023 47.47447
#>
#> , , 2
#>
#> [,1] [,2] [,3]
#> [1,] 60.00567 26.94784 68.45881
#> [2,] 48.18658 25.19455 16.58154
#>
#> , , 3
#>
#> [,1] [,2] [,3]
#> [1,] 43.51495 94.43019 21.057402
#> [2,] 60.94665 58.46271 9.016365
由reprex 包(v2.0.1)于 2021 年 12 月 7 日創建
uj5u.com熱心網友回復:
這是使用行索引的示例:
# matrix1
M1 <- matrix(c(3:14), nrow = 4, byrow = TRUE)
# matrix2
M2 <- matrix(c(13:24), nrow = 4, byrow = TRUE)
M3 <- rbind(M1[1,], M2[2,])
M3
[,1] [,2] [,3]
[1,] 3 4 5
[2,] 16 17 18
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/376271.html
上一篇:使用Pandas拆分和選擇唯一行