簡體   English   中英

R 從 Function 更新單個向量元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM