r - 在 R 中附加一个向量
问题描述
我正在尝试编写一个简单的函数,该函数从一个向量中获取随机样本,将其打印出来,然后更新先前打印的样本列表。但是,我拥有的功能不断替换以前的项目。这是该函数的抽象版本:
a <- rep(1:10)
b <- vector(length = 0)
fun <- function() {
s <- sample(a, 1)
b <- c(b,s)
print(paste("Sample:", s))
print(paste("Selected so far:",b))
}
fun()
[1] "Sample: 8"
[1] "Selected so far: 8"
fun()
[1] "Sample: 6"
[1] "Selected so far: 6" # should be 8 6
有什么建议吗?这感觉应该很简单。
解决方案
您需要使用<<-
而不是<-
.
该运算符<<-
通常仅用于函数中,并导致通过父环境搜索正在分配的变量的现有定义。
fun <- function() {
s <- sample(a, 1)
b <<- c(b,s)
print(paste("Sample:", s))
print(paste("Selected so far:",b))
}
fun()
#[1] "Sample: 7"
#[1] "Selected so far: 7"
fun()
#[1] "Sample: 3"
#[1] "Selected so far: 7" "Selected so far: 3"