如何为引用类中的方法启用参数名称自动完成

时间:2014-08-16 15:11:30

标签: r autocomplete rstudio

从帮助页面中获取示例:

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会为你提供一个参数选项列表:

enter image description here

但不适用于引用类方法的参数:

enter image description here

在上面的RStudio屏幕截图中,弹出了一个列表,但所有条目都无关紧要。 edit方法有三个参数:i,j,value,并且它们都不显示。

0 个答案:

没有答案