繁体   English   中英

如何将打印值放入矩阵

[英]How to put printed values into a matrix

find.cor<-function(p,k){
  ρ<-(p*k^2)/(0.0196*k^2-0.0032*k+0.0736)
  return(ρ)
}
#Where ρ is equivalent to ρ(X1, X2)
for(p in seq(0, 0.018, by = 0.002)){
  for(k in seq(2, 20, by =2))
     print(find.cor(p,k))
}

这样做将显示来自函数“find.cor()”的 100 个值。 但是如何将这些值放入矩阵中? 有 10 行和 10 列。

谢谢你。


mat <- matrix(data = NA, nrow = 10, ncol = 10, byrow = FALSE,
              dimnames = NULL)
i <- 0

for(p in seq(0, 0.018, by = 0.002)){
  i <- i+1
  j <- 0
  for(k in seq(2, 20, by =2)){
    j <- j+1
    mat[i,j] <- find.cor(p,k)
    
    # print(find.cor(p,k))
  }
}

使用purrr包:

matrix(unlist(map(p, find.cor, k = k)), ncol = 10)

输出:

      [,1]       [,2]      [,3]      [,4]      [,5]      [,6]      [,7]      [,8]      [,9]     [,10]
 [1,]    0 0.05494505 0.1098901 0.1648352 0.2197802 0.2747253 0.3296703 0.3846154 0.4395604 0.4945055
 [2,]    0 0.08547009 0.1709402 0.2564103 0.3418803 0.4273504 0.5128205 0.5982906 0.6837607 0.7692308
 [3,]    0 0.09473684 0.1894737 0.2842105 0.3789474 0.4736842 0.5684211 0.6631579 0.7578947 0.8526316
 [4,]    0 0.09828010 0.1965602 0.2948403 0.3931204 0.4914005 0.5896806 0.6879607 0.7862408 0.8845209
 [5,]    0 0.09992006 0.1998401 0.2997602 0.3996803 0.4996003 0.5995204 0.6994404 0.7993605 0.8992806
 [6,]    0 0.10078387 0.2015677 0.3023516 0.4031355 0.5039194 0.6047032 0.7054871 0.8062710 0.9070549
 [7,]    0 0.10128152 0.2025630 0.3038446 0.4051261 0.5064076 0.6076891 0.7089706 0.8102522 0.9115337
 [8,]    0 0.10158730 0.2031746 0.3047619 0.4063492 0.5079365 0.6095238 0.7111111 0.8126984 0.9142857
 [9,]    0 0.10178437 0.2035687 0.3053531 0.4071375 0.5089218 0.6107062 0.7124906 0.8142749 0.9160593
[10,]    0 0.10191602 0.2038320 0.3057481 0.4076641 0.5095801 0.6114961 0.7134121 0.8153282 0.9172442

使用sapply

sapply(seq(0, 0.018, by = 0.002), function(p) {
  sapply(seq(2, 20, by = 2), function(k)
    find.cor(p, k))
})



    [,1]       [,2]      [,3]      [,4]      [,5]      [,6]      [,7]      [,8]
 [1,]    0 0.05494505 0.1098901 0.1648352 0.2197802 0.2747253 0.3296703 0.3846154
 [2,]    0 0.08547009 0.1709402 0.2564103 0.3418803 0.4273504 0.5128205 0.5982906
 [3,]    0 0.09473684 0.1894737 0.2842105 0.3789474 0.4736842 0.5684211 0.6631579
 [4,]    0 0.09828010 0.1965602 0.2948403 0.3931204 0.4914005 0.5896806 0.6879607
 [5,]    0 0.09992006 0.1998401 0.2997602 0.3996803 0.4996003 0.5995204 0.6994404
 [6,]    0 0.10078387 0.2015677 0.3023516 0.4031355 0.5039194 0.6047032 0.7054871
 [7,]    0 0.10128152 0.2025630 0.3038446 0.4051261 0.5064076 0.6076891 0.7089706
 [8,]    0 0.10158730 0.2031746 0.3047619 0.4063492 0.5079365 0.6095238 0.7111111
 [9,]    0 0.10178437 0.2035687 0.3053531 0.4071375 0.5089218 0.6107062 0.7124906
[10,]    0 0.10191602 0.2038320 0.3057481 0.4076641 0.5095801 0.6114961 0.7134121
           [,9]     [,10]
 [1,] 0.4395604 0.4945055
 [2,] 0.6837607 0.7692308
 [3,] 0.7578947 0.8526316
 [4,] 0.7862408 0.8845209
 [5,] 0.7993605 0.8992806
 [6,] 0.8062710 0.9070549
 [7,] 0.8102522 0.9115337
 [8,] 0.8126984 0.9142857
 [9,] 0.8142749 0.9160593
[10,] 0.8153282 0.9172442

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM