R:在自定义类中启用自动完成

时间:2015-08-11 09:51:41

标签: r autocomplete

我创建了一个新类,我想启用R的自动完成功能。

一个例子可能是:

# Define class
setClass("customList",
     representation("list")
)

# Make example
tmp <- new("customList",
           list(
               test='a',
               b=1:3
           )        
)

结果如下:

tmp
# An object of class "customList"
# [[1]]
# [1] 'a'
#
# [[2]]
# [1] 1 2 3

此自定义列表确实具有可以使用的名称和命名参数

names(tmp)
[1] "a" "b"
tmp$test
[1] 'a'

现在我想以某种方式启用自动完成功能,所以我只需输入

即可
tmp$t <TAB> 

并获取

tmp$test

如何做到这一点?

提前 - 谢谢!

2 个答案:

答案 0 :(得分:0)

只需安装最新的v0.99.660 Rstudio,您问题中所述的自动填充应该可以正常运行。

<强>更新

以下是GRanges类的示例:

library(GenomicRanges)

gr1 <- GRanges(seqnames=Rle(c("ch1", "chMT"), c(2, 4)),ranges=IRanges(16:21, 20),strand=rep(c("+", "-", "*"), 2))

然后你可以输入:

gr1@

Rstudio将显示自动完成弹出窗口,如下图所示:

enter image description here

您可以继续使用 @ 深入了解课程结构并选择特定元素。

答案 1 :(得分:0)

作为一般解决方案,R中有一个名为.DollarNames的泛型函数,该函数控制在自定义类对象上的美元符号后面按<tab>时获得的自动完成功能。

作为示例,下面的函数可以自动完成您的customList类的名字:

.DollarNames.customList <- function(x, pattern="") {
  grep(pattern, names(x), value=TRUE)[1]
}

tmp$<tab>
tmp$test

当然,您希望在实际情况下返回所有结果。因此末尾的[1]应该删除。