我想在此代碼所在的環境中修改一些代碼(或添加/洗掉)。我發現這個話題真的很有幫助:How to change a line of an existing function in R,但我遇到的問題是我想修改的函式不在中.GlobalEnv,我不知道它的名稱是什么環境。
我正在考慮的這個環境可以描述為B我之前的一個問題的答案中的環境:運行 Shiny App 時,所有檔案中的所有物件都存在的環境是什么?. 所以基本上我想更改 Shiny App 中的一些代碼。我設法使用environment()函式找到了環境,但我發現我無法替換代碼。
也許可以使用以下代碼顯示我的問題:
test <- function() 1
test()
#> [1] 1
environment(test)$test <- eval(parse(text = "function() 2"))
test()
#> [1] 1
.GlobalEnv$test <- eval(parse(text = "function() 3"))
test()
#> [1] 3
我怎樣才能使這行代碼:environment(test)$test <- eval(parse(text = "function() 2"))作業?即如何更改物件使用environment()?
@jpiversen 讓我請您注意這個問題。
uj5u.com熱心網友回復:
問題在于$<-在“R 版本 4.1.2 (2021-11-01)”以及其他版本的 R 中,在左側多次使用 test 會造成混淆。
1)一種解決方法是將賦值分解為兩個陳述句。
test <- function() 1
test()
## [1] 1
e <- environment(test)
e$test <- eval(parse(text = "function() 2"))
test()
## [1] 2
2)交替使用assign
test <- function() 1
test()
## [1] 1
assign("test", eval(parse(text = "function() 2")), environment(test))
test()
## [1] 2
筆記
實體的作業方式相同,如果我們使用
function() 1和function() 2到位的eval(parse(text = "function() 1"))和eval(parse(text = "function() 2"))。這個問題也發布在r-help 上,Duncan Murdoch 說 R 中有一個與此相關的錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/394657.html
上一篇:如何對2個檔案執行內部聯接
