有没有办法在R?
中将函数“cat”与函数“replicate”结合起来我想看看R已经在特定时刻制作了多少“循环”。但是,我更喜欢使用“复制”,而不是使用“for”循环。请参阅下面的简单示例:
Data <- rnorm(20,20,3)
# with for loop
N <- 1000
outcome <- NULL
for(i in 1:N){
Data.boot <- sample(Data, replace=TRUE)
outcome[i] <- mean(Data.boot)
cat("\r", i, "of", N)
}
#the same but with replicate
f <- function() {
Data.boot <- sample(Data, replace=TRUE)
outcome <- mean(Data.boot)
return(outcome)
}
replicate(N, f())
因此,任何有关如何使用“复制”实现函数“cat”的想法(以及其他方法,以查看利用“复制”执行的兴趣函数的次数)将非常感激。谢谢!
答案 0 :(得分:1)
您可以通过以下方式使用范围界定:
i = 0
f <- function() {
Data.boot <- sample(Data, replace=TRUE)
outcome <- mean(Data.boot)
i <<- i + 1
print(i)
return(outcome)
}
答案 1 :(得分:1)
作为替代方案,您可以使用sapply而不是replicate:
Data <- rnorm(20,20,3)
N <- 1000
f <- function(i) {
Data.boot <- sample(Data, replace=TRUE)
cat("\r", i, "of", N)
mean(Data.boot)
}
outcome <- sapply(1:N, f)
或者,使用plyr,你可以使用raply和progress选项(如果你的主要目的是看你有多远):
outcome <- plyr::raply(N, mean(sample(Data, replace = TRUE)), .progress = "text")