爲什麼trace(...,edit = TRUE)不起作用要臨時編輯封裝函數func
的正文,我經常使用trace(func, edit=TRUE)
。出於某種原因,不過,R是不是讓我做這件事的時候func
是[.data.table
:當... = [.data.table
## Note: In this and the other cases below, once an editor pops up, I save and
## and then exit without making any edits to the function. The commented-out
## message below each call to trace() is what is then printed to my R console.
trace("[.data.table", where=data.table, edit=TRUE)
# Error in .makeTracedFunction(def, tracer, exit, at, print, doEdit) :
# the editing in trace() can only change the body of the function, not
# the arguments or defaults
問題:什麼可能導致這個錯誤?還有哪些其他功能也會觸發它?對於這樣的功能,是否有一些替代解決方法可以讓我編輯它們?
FWIW,這似乎並沒有爲與功能的一些一般問題在data.table的名字空間(例如參見下面#1
)也不是與一般的子集的方法的問題(參見例如下面#2
)。
## (#1)
trace("within.data.table", where=data.table, edit=TRUE)
# Tracing function "within.data.table" as seen from package "data.table"
# [1] "within.data.table"
## (#2)
trace("[.Date", edit=TRUE)
# Tracing function "[.Date" in package "base"
# [1] "[.Date"
我的Windows XP計算機上運行R-3.0.0
和data.table_1.8.8
,並得到了同樣的錯誤我是使用設置options(editor="emacs")
,options(editor="notepad")
或使用R GUI的默認編輯器。
它爲我在2.15.3與data.table_1.8.6,Windows 7的 – 2013-04-10 17:02:10
不過,我得到了同樣的錯誤升級到1.8.8後, 。 – 2013-04-10 17:10:49
@MatthewPlourde - 謝謝!這真的有助於縮小問題範圍。 – 2013-04-10 17:12:06