如何向Rstudio建议我的代码自动完成的提示?

时间:2017-08-29 05:50:57

标签: r rstudio

通常,如果a是data.frame,则可以通过a$ 标签自动填充列名。 chunked 包有一个很好的功能,如果你运行

a <- chunked::read_csv_chunkwise("some.csv")

然后当您键入a[然后标签时,即使a不是data.frame,它也会通过自动完成显示变量列表。

我试图复制这个代码用于我自己的代码,但在搜索&#34; rstudio autocompletion&#34;后,我无法找到任何相关资源。和其他各种搜索。

我注意到class(a)返回

  

[1]&#34; chunkwise&#34; &#34; TBL&#34;

我看了一下属于S3类的所有函数&#34; chunked&#34;我注意到它有一个叫做tbl_vars的方法,所以我想也许这就是Rstudio用来做自动完成的方法。

所以为了测试它我尝试了

write.csv(data.frame(a = 1, b = 2), file = "test.csv",row.names = F)

tbl_vars.test_auto_complete <- function(fs) {
  names(fread(fs$path))
}

test_auto_complete <- list(path = "test.csv")
class(test_auto_complete) <- "test_auto_complete"
tbl_vars(test_auto_complete) 
  

[1]&#34; a&#34; &#34; B&#34;

但是当我输入test_auto_complete 标签时,自动完成功能不会显示我想要的变量。

我们如何向Rstudio提供提示以使自动完成工作?

1 个答案:

答案 0 :(得分:1)

对于从tbl类继承的对象,RStudio确实调用tbl_vars()来填充完成。 (这是一个特定于RStudio的自动完成系统功能。)

在您的示例中,您创建的对象继承自tbl,因此此自动完成路径无法启动。

但是,这种形式的“特殊”&#39; RStudio没有检测到S3 dispatch(你直接将S3方法定义为这样的代码),所以你不能用这样的测试代码验证这一点。您必须在R包中明确定义和注册S3方法。

或者,您可以尝试使用以下内容显式注册S3方法:

registerS3method("tbl_vars", "test_auto_complete", tbl_vars.test_auto_complete)

用于内联测试。