Как вы и написали, это будет цикл "while".
Для циклов в R имеют следующий синтаксис:
for (i in 1:2000) {
df1 <- 5
df2 <- 10
x <-rf(5, df1=df1, df2=df2)
b <- df2
p.value <- t.test(x, mu=(b/(b-2)))$p.value
}
Кроме того, может быть более эффективно использовать конструкцию apply, например, с replicate, и включать df в качестве аргументов функции:
get.p.value <- function(df1, df2) {
x <- rf(5, df1=df1, df2=df2)
p.value <- t.test(x, mu=(df2/(df2-2)))$p.value
}
replicate (2000, get.p.value(df1 = 5, df2 = 10))
Это не всегда так, но упрощает восстановление значений p.value.