[英]R Update Single Vector Element from Function
我對 R 比較陌生,遇到了讓我感到困惑的情況。 我正在更新預先初始化的向量中的一些值,並意識到這些值沒有更新。 在花了幾個小時嘗試調試后,我來到了這里。
最小的代碼可以總結如下:
incr <- function(v) {
v[1] = v[1] + 1
}
vec = 0
incr(vec)
為什么我要增加 function? 我有一個向量用於存儲每種類型的自定義類別的計數,並會打開一些因素來判斷要增加哪個計數器。 但最終,這段代碼是其核心的基本思想。
我期望的行為是vec[1]
的值從 0 更改為 1。但是vec[1]
在調試器中查看時保持為 0。 這是因為一些 scope 或我沒有讀過的可變性嗎?
您可以使用assign
為您選擇的環境中的變量名稱設置值。 在下面的function中,默認環境是調用者的環境。
incr <- function(x, envir = parent.frame()){
xname <- deparse(substitute(x))
x[1] <- x[1] + 1L
assign(xname, x, envir = envir)
}
a <- 0L
incr(a)
a
#[1] 1
incr(a)
a
#[1] 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.