假設(shè)我們具有以下功能:foo <- function(x){ line1 <- x line2 <- 0 line3 <- line1 + line2 return(line3)}我們想將第二行更改為: line2 <- 2你會怎么做?一種方法是使用fix(foo)并更改功能。另一種方法是再次編寫該函數(shù)。還有另一種方法嗎?(請記住,任務(wù)是僅更改第二行)我想要以某種方式將函數(shù)表示為字符串的向量(嘛,字符),然后更改其值之一,然后再次將其轉(zhuǎn)換為函數(shù)。
3 回答

叮當(dāng)貓咪
TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個贊
> body(foo)[[3]] <- substitute(line2 <- 2)
> foo
function (x)
{
line1 <- x
line2 <- 2
line3 <- line1 + line2
return(line3)
}
(“ {”是body(foo)[[1]],每一行都是列表的后續(xù)元素。)

海綿寶寶撒
TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個贊
您可以使用“ body ”功能。此函數(shù)將返回函數(shù)的主體:
fnx = function(a, b) { return(a^2 + 7*a + 9)}
body(fnx)
# returns the body of the function
因此,“編輯”功能的一種好方法是在賦值語句的左側(cè)使用“ body”:
body(fnx) = expression({a^2 + 11*a + 4})
- 3 回答
- 0 關(guān)注
- 493 瀏覽
添加回答
舉報
0/150
提交
取消