Базовый индекс цикла в функции - PullRequest
1 голос
/ 03 апреля 2019

Я хочу добавить цикл к приведенному ниже коду, чтобы он выполнялся четыре раза для

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 Ответ

2 голосов
/ 03 апреля 2019

здесь вы можете использовать неявный цикл (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со случайными числами (см., например, этот вопрос ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...