0
這是我想要獲得的,但是避免在函數內的所有變量之前添加「e $」。由於如何將一個函數中生成的所有變量(同時)分配到全球環境?
e <- globalenv()
f <- function(P) {
e$c <- P + 1
e$d <- c + 2
}
f(2)
這是我想要獲得的,但是避免在函數內的所有變量之前添加「e $」。由於如何將一個函數中生成的所有變量(同時)分配到全球環境?
e <- globalenv()
f <- function(P) {
e$c <- P + 1
e$d <- c + 2
}
f(2)
這是一個非常壞主意,但我沒有使用可變c
,因爲這也是一個(相當重要)函數的名字,你可以做
f <- function(P) {
x <<- P + 1
y <<- x + 2
}
f(2)
。事實上,它會失敗。
如果你需要傳遞的第一功能(f1
)到另一個功能(f2
)返回的多個值,你應該做的是一樣的東西:
f1 <- function(P) {
x <- P + 1
y <- x + 2
list(x=x, y=y)
}
f2 <- function(x, y) {
x + y
}
r <- f1(2)
f2(r$x, r$y)
或
r <- f1(2)
do.call(f2, r)
謝謝RobertH,我知道這一點,但還有其他解決方案嗎? – Tam
你的腳本使用x和y作爲變量的名稱,但是當名稱是c和d時,我有一個錯誤:f(2)中的錯誤:無法更改'c'的鎖定綁定的值。我不明白爲什麼。 – Tam
對不起RobertH,我對R沒有什麼信心,但爲什麼是一個壞主意?從單個函數返回更多變量可能是最好的策略? – Tam