从帮助页面中获取示例:
mEdit <- setRefClass("mEdit",
fields = list( data = "matrix",
edits = "list"),
methods = list(
edit = function(i, j, value) {
## the following string documents the edit method
'Replaces the range [i, j] of the
object by value.
'
backup <-
list(i, j, data[i,j])
data[i,j] <<- value
edits <<- c(edits, list(backup))
invisible(value)
},
undo = function() {
'Undoes the last edit() operation
and update the edits field accordingly.
'
prev <- edits
if(length(prev)) prev <- prev[[length(prev)]]
else stop("No more edits to undo")
edit(prev[[1]], prev[[2]], prev[[3]])
## trim the edits list
length(edits) <<- length(edits) - 2
invisible(prev)
},
show = function() {
'Method for automatically printing matrix editors'
cat("Reference matrix editor object of class",
classLabel(class(.self)), "\n")
cat("Data: \n")
methods::show(data)
cat("Undo list is of length", length(edits), "\n")
}
))
我学会了通过以下方式启用自动完成功能:
.DollarNames.mEdit <- function(x, pattern){
grep(pattern, c(getRefClass(class(x))$methods(), names(getRefClass(class(x))$fields())), value=TRUE)
}
但这只完成了字段和方法名称,而不是方法的参数名称。
我将通过一些截图解释我的意思。
它是如何正常工作的。以plot()函数为例,当你在括号内并点击标签时,R会为你提供一个参数选项列表:
但不适用于引用类方法的参数:
在上面的RStudio屏幕截图中,弹出了一个列表,但所有条目都无关紧要。 edit
方法有三个参数:i,j,value,并且它们都不显示。