函数中的基本循环索引

时间:2019-04-03 12:31:32

标签: r loops

我想在下面的代码中添加一个循环,以便它可以运行四次

n <- c(1000, 10000, 100000, 1000000)

并返回包含n值及其解pi的矩阵?谢谢!

这是我的代码,用于n的单个值:

n <- 1000
x <- c(runif(n, -1,1))
y <-c(runif(n, -1,1))
points <- data.frame(cbind(x,y))

z <- points$x^2 + points$y^2
pi <- function(n,points){
  y <- 4*length(z[z<=1])/n
  return(y)
}
pi(n, points)

1 个答案:

答案 0 :(得分:2)

以下是使用隐式循环(sapply)而非for循环的一种方法:

calc_pi <- function(n){
  x <- c(runif(n, -1,1))
  y <-c(runif(n, -1,1))
  points <- data.frame(cbind(x,y))

  z <- points$x^2 + points$y^2
  pi <- function(n,points){
    y <- 4*length(z[z<=1])/n
    return(y)
  }
  pi(n, points)
}

n <- c(1000, 10000, 100000, 1000000)
set.seed(1)
data.frame(n = n, pi = sapply(n, calc_pi))
      n       pi
1 1e+03 3.080000
2 1e+04 3.141600
3 1e+05 3.137640
4 1e+06 3.143064

请注意,在处理随机数时,最好使用set.seed设置随机种子(例如,参见this question)。