通常,如果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提供提示以使自动完成工作?
答案 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)
用于内联测试。