R:如何将循环生成的各种随机数存储在矩阵中?

R:如何将循环生成的各种随机数存储在矩阵中?,r,matrix,random,storage,sampling,R,Matrix,Random,Storage,Sampling,我想在1到100之间生成10乘以20的随机数。因此,最终矩阵应包括总共200个数字。 这是我的方式,我是如何试图解决它的: x <- 10 N <- 20 A <- matrix() for (i in 1:x) { A[i] <- sample(1:100, N, FALSE) } A x索引时缺少逗号。我是对的,同一矩阵的每一行都应该用随机数填充 x[3,]7 3 1 16 12 16 16 15 14 19 #> [4,] 15 19

我想在1到100之间生成10乘以20的随机数。因此,最终矩阵应包括总共200个数字。 这是我的方式,我是如何试图解决它的:

x <- 10
N <- 20
A <- matrix()

for (i in 1:x) {
  
  A[i] <- sample(1:100, N, FALSE)
  
}

A

x索引时缺少逗号。我是对的,同一矩阵的每一行都应该用随机数填充

x[3,]7 3 1 16 12 16 16 15 14 19
#>  [4,]   15   19    4    6    4    5    4    5    8    12    20    14    17
#>  [5,]   14    4    9    7   18   10   12   12   12    20    14    10     9
#>  [6,]   19    4   19    7    6    1   17    6    8     3     4     1     1
#>  [7,]   10   19    8    7    8   16   10    9    6     5     1    12     3
#>  [8,]   15    9    9   11    1   15   10   14   19     8     7    18    15
#>  [9,]   19    3   19    8    8   18    7    1   18    15    18     1    17
#> [10,]   19    4   20    7    6   12   12   14   15    13    14    16     7
#>       [,14] [,15] [,16] [,17] [,18] [,19] [,20]
#>  [1,]    15     5     8     4     5     2     1
#>  [2,]     5    12    19    11    13    18    11
#>  [3,]    10    14    15     7     8    11    13
#>  [4,]     2     4     2    11    12     6     2
#>  [5,]    15    14    13    11    10     5    14
#>  [6,]    14    16     6    12     6     2    13
#>  [7,]     5     4    15     2     1    14     9
#>  [8,]     8    10     5     2     2    14    13
#>  [9,]    19    14     1    16     7    16    15
#> [10,]    18     4    20     4    12     3    11
如果您不希望在不替换的情况下进行采样,最快的方法应该是直接用采样数据填充矩阵命令:

矩阵(样本(1:100200,真),10,20)
#>       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
#>  [1,]  100   27   99   82   15   55   27   35   77    89    16    45    10
#>  [2,]    3   96   80   87   90   51   10    4   32    40    37    29    49
#>  [3,]   99   97   30   32   34   27   56   12   62    36    57    64    25
#>  [4,]   23   29    4   60   52   71  100   26   18    19    97     9    15
#>  [5,]   77   76   63   94   27   33   68    6   42    46   100    22    43
#>  [6,]   43   84   89   90   22   90   44   59    8    71    79    14     2
#>  [7,]   97   40   39    3   91   26   26   32   33    53    75     1    65
#>  [8,]   77   91   45   36   44   92   37   22   46    73    66   100    23
#>  [9,]   44   85   42   98   80   91   32   60   42    85    52    22    11
#> [10,]    6    4   51   96   82   13   72    8    3    61    50    92    91
#>       [,14] [,15] [,16] [,17] [,18] [,19] [,20]
#>  [1,]    90    17    13    52    61    75    65
#>  [2,]    53    75     3    55    82    69    73
#>  [3,]    21    46    60    43    76    72    58
#>  [4,]    33    26    92    92    19    97    62
#>  [5,]    15    92    36    63    44    35    59
#>  [6,]     9    66    17    35    50    18    13
#>  [7,]    36    19    92    94    77    55    56
#>  [8,]     9    54    86    58    69    68    11
#>  [9,]    25    65    61    97    45    94    86
#> [10,]    52    42    18     4    94    49    58

由(v0.3.0)于2020-08-04创建除了上面的答案之外,还可以查看
replicate
包装器以获得更简洁的解决方案,该解决方案不需要循环。它将给出基本相同的结果,尽管10个随机样本(20个)中的每一个都将沿着列而不是行运行(这相当于先前解决方案的转置)

如果要沿行放置10个样本,请使用
t
功能:

set.seed(100)
t(replicate(x, sample(1:100, N, FALSE)))

即将发布类似的答案,并评论for循环不是最佳策略。因为问题是如何将这些值存储在
矩阵中
我认为有必要指出,同样的任务可以通过
矩阵(round(runif(200,1100)),nrow=10)这样的方法更有效地完成。也许你可以把这个加到你的答案里?
       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]   74    2   41   55   42   19   50   87   20    46
 [2,]   89   51  100   47   76   95   12   30   64    89
 [3,]   78   68   24   68   37   23   60   82   79    64
 [4,]   23   98   43   12   26   76   45   97   15    19
 [5,]   86   52    7   51   24   26   37   71  100    11
 [6,]   70   48   63   16   12    5   68   74   50    76
 [7,]    4   32   65   56    9   78   73   49   47    20
 [8,]   55   85    9   22   55   40   26    2   55    74
 [9,]   95   91   20   82   75   81   27   11   18   100
[10,]    7   39   14   53   63   97   31   47   89    82
[11,]   91   16   78    3   35   64   46    1   53    28
[12,]   93   75   88    5   58   54   71   95   84    16
[13,]   43   66    3   44   97   42   21   32   11    69
[14,]   82   70   36   85   48    3   39   73   77     7
[15,]   61   45   27   28   80   80   65   13   22    81
[16,]   12   30   46   52   98   38   16   62   52    56
[17,]   51   93   59   25   18   43   82   92   39    37
[18,]   72   29   85   42   72   83    8   58   31    72
[19,]   18   31   69   15   83    4   10   14   78    93
[20,]   25   54   47   57   66   74   69   42   76     5
set.seed(100)
t(replicate(x, sample(1:100, N, FALSE)))
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
 [1,]   74   89   78   23   86   70    4   55   95     7    91    93    43    82    61    12    51    72    18    25
 [2,]    2   51   68   98   52   48   32   85   91    39    16    75    66    70    45    30    93    29    31    54
 [3,]   41  100   24   43    7   63   65    9   20    14    78    88     3    36    27    46    59    85    69    47
 [4,]   55   47   68   12   51   16   56   22   82    53     3     5    44    85    28    52    25    42    15    57
 [5,]   42   76   37   26   24   12    9   55   75    63    35    58    97    48    80    98    18    72    83    66
 [6,]   19   95   23   76   26    5   78   40   81    97    64    54    42     3    80    38    43    83     4    74
 [7,]   50   12   60   45   37   68   73   26   27    31    46    71    21    39    65    16    82     8    10    69
 [8,]   87   30   82   97   71   74   49    2   11    47     1    95    32    73    13    62    92    58    14    42
 [9,]   20   64   79   15  100   50   47   55   18    89    53    84    11    77    22    52    39    31    78    76
[10,]   46   89   64   19   11   76   20   74  100    82    28    16    69     7    81    56    37    72    93     5