[英]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.