Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 循环矩阵中的每一行_R_Loops_Matrix_Statistics - Fatal编程技术网

R 循环矩阵中的每一行

R 循环矩阵中的每一行,r,loops,matrix,statistics,R,Loops,Matrix,Statistics,我有一个12列20行的矩阵。基本上只是平方自相关系数。我想对每一行做一个测试,如下所示: new_mat <- apply(values_tb, 1, function(x) n * (n + 2) * (x/(n - seq_along(x)))) values_tbl1 <- as_tibble(`colnames<-`(t(new_mat), paste0("Q_k", 1:12))) QTL;DR:代码可以固定,提高效率,并缩短为两行: 您的代码有

我有一个12列20行的矩阵。基本上只是平方自相关系数。我想对每一行做一个测试,如下所示:

new_mat <- apply(values_tb, 1, function(x) n * (n + 2) * (x/(n - seq_along(x))))
values_tbl1 <- as_tibble(`colnames<-`(t(new_mat), paste0("Q_k", 1:12)))
QTL;DR:代码可以固定,提高效率,并缩短为两行:

您的代码有一些地方需要改进。主要是逻辑错误。您在1:12中对j运行循环,从矩阵中提取一列,然后在1:20循环中对k中的二十个元素中的每一个计算公式。到目前为止,一切顺利。但是,您当时只将该列的前12个元素作为values_tbl1中的新行。由于要对12列执行此操作,因此只能向结果中添加12行。因此,您似乎无意中进行了换位,从而截断了结果

代码中跳出的另一件事是它没有利用R的内置矢量化。区块:

  for (k in 1:20) {
    Q <- n*(n+2)*(value_squard[k]/(n-k))
    value_vector1 <- append(value_vector1, Q)
  }
但事实上,在此之后,您只使用过一次value_squard,所以实际上整个部分:

  vector_j <- values_tb[,j]
  value_squard <- vector_j
  for (k in 1:20) {
    Q <- n*(n+2)*(value_squard[k]/(n-k))
    value_vector1 <- append(value_vector1, Q)
  }
给你最后的结果:

values_tbl1
#> # A tibble: 20 x 12
#>     Q_k1  Q_k2  Q_k3  Q_k4  Q_k5  Q_k6  Q_k7  Q_k8  Q_k9 Q_k10 Q_k11 Q_k12
#>    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#>  1 533.  435.  999.  546.   688. 792.  551.   272. 435.  196.  1000.  573.
#>  2 771.  170.  312.  102.   472.  43.3 604.   725. 984.  541.   580.  746.
#>  3 648.  640.  484.   25.2  607. 675.   74.7  296.  10.1 309.   954.  255.
#>  4 868.  324.  666.  593.   749. 519.  442.   735. 186.  131.   857.  146.
#>  5 370.  147.  219.   14.1  990. 640.  954.   378. 609.  965.   815.  897.
#>  6 872.  233.   18.1 873.   607. 715.   72.7  490. 411.  588.   106.  413.
#>  7 172.  664.   97.5 412.   729. 422.  599.   406. 302.  339.   799.  789.
#>  8 790.  635.  255.  472.   823. 947.   89.8  993. 839.  684.   564.  427.
#>  9 175.   95.4 409.  893.   615.  24.2 760.   312. 472.  833.   127.  511.
#> 10  22.1 315.  154.  749.   757. 840.  577.   960. 374.  652.   914.  301.
#> 11 886.  677.  513.  444.   723. 286.  821.   159. 203.  850.   547.  781.
#> 12 358.  915.  819.  722.   768. 308.  155.   527. 326.  270.   856.  174.
#> 13 929.  275.  758.  932.   560. 272.  607.   433. 221.  239.   208.  762.
#> 14 261.  456.  388.  796.   305. 583.  437.   141. 190.  874.   504.  384.
#> 15 184.  347.  944.  118.   121. 828.  479.   186. 353.  203.   444.  795.
#> 16 265.  698.  624.  977.   255. 937.   54.5  706. 589.  984.   427.  560.
#> 17 122.  688.  147.  333.   448. 206.  884.   374. 890.   73.9  267.  547.
#> 18 631.  478.  238.  502.   130. 623.  834.   271. 762.  827.   392.  268.
#> 19  58.2 400.  776.  434.   356. 741.  706.   776. 315.  428.   326.  309.
#> 20 793.  566.  753.  765.   449. 959.  745.   467. 752.  651.   359.  638.

由v0.3.0于2020-07-03创建,请正确设置您的问题格式,解释您想要做什么,并与预期输出一起分享一个适当的可重复工作示例
value_vector1 <-  n * (n + 2) * (value_squard / (n - 1:20))
  vector_j <- values_tb[,j]
  value_squard <- vector_j
value_squard <- values_tb[,j]
  vector_j <- values_tb[,j]
  value_squard <- vector_j
  for (k in 1:20) {
    Q <- n*(n+2)*(value_squard[k]/(n-k))
    value_vector1 <- append(value_vector1, Q)
  }
value_vector1 <-  n * (n + 2) * (values_tb[,j] / (n - 1:20))
new_mat <- apply(values_tb, 1, function(x) n * (n + 2) * (x/(n - seq_along(x))))
values_tbl1 <- as_tibble(`colnames<-`(t(new_mat), paste0("Q_k", 1:12)))
values_tbl1
#> # A tibble: 20 x 12
#>     Q_k1  Q_k2  Q_k3  Q_k4  Q_k5  Q_k6  Q_k7  Q_k8  Q_k9 Q_k10 Q_k11 Q_k12
#>    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#>  1 533.  435.  999.  546.   688. 792.  551.   272. 435.  196.  1000.  573.
#>  2 771.  170.  312.  102.   472.  43.3 604.   725. 984.  541.   580.  746.
#>  3 648.  640.  484.   25.2  607. 675.   74.7  296.  10.1 309.   954.  255.
#>  4 868.  324.  666.  593.   749. 519.  442.   735. 186.  131.   857.  146.
#>  5 370.  147.  219.   14.1  990. 640.  954.   378. 609.  965.   815.  897.
#>  6 872.  233.   18.1 873.   607. 715.   72.7  490. 411.  588.   106.  413.
#>  7 172.  664.   97.5 412.   729. 422.  599.   406. 302.  339.   799.  789.
#>  8 790.  635.  255.  472.   823. 947.   89.8  993. 839.  684.   564.  427.
#>  9 175.   95.4 409.  893.   615.  24.2 760.   312. 472.  833.   127.  511.
#> 10  22.1 315.  154.  749.   757. 840.  577.   960. 374.  652.   914.  301.
#> 11 886.  677.  513.  444.   723. 286.  821.   159. 203.  850.   547.  781.
#> 12 358.  915.  819.  722.   768. 308.  155.   527. 326.  270.   856.  174.
#> 13 929.  275.  758.  932.   560. 272.  607.   433. 221.  239.   208.  762.
#> 14 261.  456.  388.  796.   305. 583.  437.   141. 190.  874.   504.  384.
#> 15 184.  347.  944.  118.   121. 828.  479.   186. 353.  203.   444.  795.
#> 16 265.  698.  624.  977.   255. 937.   54.5  706. 589.  984.   427.  560.
#> 17 122.  688.  147.  333.   448. 206.  884.   374. 890.   73.9  267.  547.
#> 18 631.  478.  238.  502.   130. 623.  834.   271. 762.  827.   392.  268.
#> 19  58.2 400.  776.  434.   356. 741.  706.   776. 315.  428.   326.  309.
#> 20 793.  566.  753.  765.   449. 959.  745.   467. 752.  651.   359.  638.