是否可以包裝R函數以修改其功能?是否可以「包裝」R函數以修改其功能?
這裏有一個玩具示例來解釋我的意思。考慮一下這個功能sum2
:
sum2 <- function (x) if (length(x) == 1) { cat(x); sum(x) } else sum(x)
它做什麼呢sum
,用細小的改動。假設我想重新定義sum
本身做什麼sum2
在這裏做。我怎樣才能以通用的方式做到這一點,而不知道我正在包裝的函數的內部?
我想這樣做,暫時「修復」一個軟件包功能,而不必修改和重新安裝軟件包。我想檢查它的輸入並在輸入滿足某些條件時返回一個特殊值。
(對於那些誰是深深熟悉的數學,我正在尋找類似的東西Gayley-Villegas trick)
這適用於某些用途。但是另一個包可能會調用'sum'作爲'base :: sum',並且不會看到你的定義。 – 2013-05-11 03:25:45
對於誰低估:不是在許多情況下(即使不是全部)在實踐中運作良好的解決方案,而是如何發佈更好的解決方案?目前還沒有其他答案可以解決我遇到的實際問題。這一個做到了,所以我分享了它,而不是讓問題變得憔悴。 – Szabolcs 2013-05-13 13:26:30