繁体   English   中英

替代嵌套'for'循环R

[英]Alternative nested 'for' loop R

我有以下代码,我想更有效地编写它。 在这种情况下,我无法弄清楚如何使用函数mapplay

a <- c(1,2,3)
b <- c(4,5,6)
M<- matrix(0,nrow=3,ncol=3)

for (i in 1:length(a)){
     shape= a[i]

     for (j in 1:length(b)){
     rate=b[i]

     X <- rgamma(100,shape,rate)
     M[i,j] <- ks.test(X,"pgamma",a,b)$p.value
      }
}

如果您提供有效的代码( M未定义)并定义您的目标而不是提供可能的过程,那会更好。

此外,您可能想定义“高效”的含义:最少的代码行数? 最快的执行? 最普遍?

但无论如何,这是一个我认为可以满足您需求的管道。

library(tidyverse)

set.seed(123)

tibble() %>% 
  expand(
    shape=c(1,2,3), 
    rate=c(4,5,6), 
    X=rgamma(100,shape,rate)
  ) %>% 
  group_by(shape, rate) %>% 
  summarise(M=ks.test(X,"pgamma", shape, rate)$p.value, .groups="drop")
# A tibble: 9 × 3
  shape  rate        M
  <dbl> <dbl>    <dbl>
1     1     4 6.10e- 4
2     1     5 2.22e- 7
3     1     6 6.44e-11
4     2     4 1.34e- 4
5     2     5 4.43e- 2
6     2     6 4.41e- 1
7     3     4 0       
8     3     5 6.09e-12
9     3     6 1.02e- 7

暂无
暂无

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

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