2010-05-10 93 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") 
    }