我需要创建一个throw函数,每次用户使用throw()函数时返回1到6之间的随机数。但我需要记录用户在用户不知道的变量中获得的值。我的想法是,我可以在稍后的某个时间点交叉验证报告的值和实际值。
我这样做了
throw<-function(){
dice<-c(1:6)
A<-c(0,0)
x<-sample(dice,1)
fetches<-c(A,x)
x
}
我认为调用fetches变量会得到我所需的向量。但是我得到的输出&#34;找不到对象&#34;同时要求提取
由于
答案 0 :(得分:0)
我会使用“隐形”环境并预先分配一堆值:
#objects with a name starting with . are invisible
.e <- new.env(, parent = .GlobalEnv)
#pre-allocate
.e$fetches <- integer(100)
throw<-function(){
dice <- c(1:6)
x <- sample(dice,1)
#check if vector has room for new values, grow if necessary
if (sum(.e$fetches == 0L) == 0L) .e$fetches <- c(.e$fetches, integer(100))
.e$fetches[which.min(.e$fetches)] <- x
return("complete")
}
set.seed(42)
throw()
#[1] "complete"
throw()
#[1] "complete"
.e$fetches[.e$fetches != 0L]
#[1] 6 6