Заменить петли в функции R - PullRequest
1 голос
/ 10 мая 2010

Я новичок в R, и мне трудно понять, как заменить цикл FOR в функции ниже. Функция оценивает среднее значение популяции. Любая помощь будет высоко ценится. Спасибо!

 myFunc<- function(){


myFRAME <- read.csv(file="2008short.csv",head=TRUE,sep=",")

meanTotal <- 0

for(i in 1:100)
{

mySample <- sample(myFRAME$TaxiIn, 100, replace = TRUE)

tempMean <- mean(mySample)

meanTotal <- meanTotal + tempMean


}

cat("Estimated Mean: ", meanTotal/100, "\n") #print result

}

Ответы [ 2 ]

5 голосов
/ 10 мая 2010

Как Роб предполагает, что ваш цикл не нужен, но в духе вопроса «replicate ()» Функция может напрямую заменить ваш цикл. Вот так:

   myFunc <- function(){
      myFRAME <- read.csv(file="2008short.csv",head=TRUE,sep=",")
      meanTotal <- <- mean(replicate(100,mean(sample(myFRAME$TaxiIn,100,T))))
      cat("Estimated Mean: ", meanTotal, "\n")
    }
2 голосов
/ 10 мая 2010

Ваш код принимает среднее значение из 100 выборочных значений, каждое из которых основано на выборке из 100 наблюдений. Это эквивалентно взятию среднего из 10 000 наблюдений. Таким образом, следующее будет делать то же самое:

myFunc <- function(){
  myFRAME <- read.csv(file="2008short.csv",head=TRUE,sep=",")
  meanTotal <- sample(myFRAME@TaxiIn,10000,replace=TRUE)
  cat("Estimated Mean: ", meanTotal, "\n")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...