簡體   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