在R中,如何在定義函數時將變量的值用作常量?R - 如何獲得一個變量的值作爲常量處理?
在一個循環,我想要做的事,如:
theta <- vector[n]
f <- function(x)
{
v <- theta * x
return(v)
}
但我需要以後能夠重新theta和沒有這個改變函數的定義?我研究過get(),但是這遇到了同樣的問題。
在R中,如何在定義函數時將變量的值用作常量?R - 如何獲得一個變量的值作爲常量處理?
在一個循環,我想要做的事,如:
theta <- vector[n]
f <- function(x)
{
v <- theta * x
return(v)
}
但我需要以後能夠重新theta和沒有這個改變函數的定義?我研究過get(),但是這遇到了同樣的問題。
你可以嘗試這樣的事情:
f <- function(theta) {
t <- theta
function(x) t * x
}
theta <- 5
g <- f(theta)
# g is now a function that multiplies its argument by 5
g(2)
#[1] 10
# Now try to modify theta in the global environment
theta <- 6
# g doesn't change
g(2)
#[1] 10
一般而言,功能不應該依賴於常量在全局環境。在這種情況下,'f'應該是'theta'和'x'的函數。在循環內部定義一個函數*會是一個非常奇怪的情況。在循環外定義函數,然後在循環內部使用'f(x,theta [i])'。 – Gregor
感謝您的回覆,這會更有意義。 – Conor