簡體   English   中英

如何在R中創建多路矩陣

[英]How create a multiway matrix in R

我需要進行一千次試驗,每個試驗都會生成一個包含12行7列的矩陣。 如何創建多路矩陣以保持此結果。 謝謝

大概,方便的方法是將矩陣合並到列表中:

A <- matrix(1, ncol=7, nrow=12)
B <- matrix(2, ncol=7, nrow=12)
C <- matrix(3, ncol=7, nrow=12)
mats_list <- list(A, B, C)

這將為您提供一個對象,每個對象的尺寸分別不同,然后每個矩陣中的行/列都不同。 我會說這足以滿足您的需求,但是如果您願意,可以使用array

# List to matrix
mat_mat <- array(data = mats_list)
dim(mat_mat)

為了得到:

> dim(mat_mat)
[1] 3

> dim(mats_list)
NULL

這就是說,列表將絕對可以存儲和提取結果。

您可以使用數組:

set.seed(2)
x = array(rnorm(1000*12*7), c(1000,12,7))

> dim(x[1,,])
#[1] 12  7

> x[1,,]
#             [,1]       [,2]       [,3]        [,4]         [,5]        [,6]        [,7]
# [1,] -0.89691455  1.4948667  0.4972043  0.19952489 -0.979683918 -0.71217954  0.21510070
# [2,]  0.46620043 -0.7645256 -0.7172315  1.69938645 -1.344280437  0.20653442 -0.91194045
# [3,] -1.89234891 -0.1624283  1.1351026 -1.03220736  0.515821229 -0.10112438 -0.85460968
# [4,] -2.13847638 -0.8206868  0.4083286  0.01454552  1.373745316 -0.02894237 -0.39673381
# [5,]  0.64084454 -1.0644555 -1.2606268 -1.69156964 -0.788296665  1.13059108  0.03310462
# [6,] -1.73081229  0.5706814 -1.2607599  0.16596195  0.001174951  0.55506678 -1.36083280
# [7,] -1.00846517 -0.8213516  1.7968959  1.23328148 -0.682850261  1.14101830  0.84107576
# [8,]  1.02356724 -0.9281833  0.3441365 -0.01183211 -0.649788421  0.08010038 -0.50363132
# [9,] -0.02165721  0.6806610  0.9703106  1.22171432 -1.446446015  1.34022520 -1.41818567
#[10,]  0.77058313  0.5023534  1.1598751 -1.20300804 -0.367739799 -0.95578416 -0.14794308
#[11,]  1.34046771 -1.5331327  0.9604876 -0.40545479 -1.066988497 -0.14925083 -1.01576090
#[12,] -0.60441747  0.1111074  1.8406487  0.19648890  0.503018762  1.01263304  0.42761716

讓我們假設您有一個稱為trial的函數,該函數生成12x7矩陣。

例如

trial <- function() {
  matrix(rnorm(84), nrow = 12)
}

使用基數R,您可以執行以下操作:

trial_array <- replicate(1000, trial())

這將生成一個具有3維的數組或

trial_list <- replicate(1000, trial(), simplify = FALSE)

等效plyr職能是raplyrlply

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM