2010-05-10 89 views
1

我是R新手,在解決如何在下面的函數中替換FOR循環時遇到問題。該函數估計總體平均值。任何幫助都將不勝感激。謝謝!替換R函數中的循環

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

您的代碼採用100個樣本均值的均值,每個均值均基於100個觀測值的樣本。這相當於採用10,000次觀測的平均值。所以下面將做同樣的事情:

myFunc <- function(){ 
    myFRAME <- read.csv(file="2008short.csv",head=TRUE,sep=",") 
    meanTotal <- sample([email protected],10000,replace=TRUE) 
    cat("Estimated Mean: ", meanTotal, "\n") 
} 
5

作爲羅布建議你的循環是不必要的,但在這個問題的精神,「複製()」 功能,可直接替換你的for循環。像這樣:

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") 
    }