首页 > 解决方案 > 在 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  

有什么建议吗?这感觉应该很简单。

标签: rappend

解决方案


您需要使用<<-而不是<-.

该运算符<<-通常仅用于函数中,并导致通过父环境搜索正在分配的变量的现有定义。

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"

推荐阅读