rstudio - 基于 S4 对象内的插槽自动完成
问题描述
我正在尝试让 RStudio 列自动完成以使用自定义 S4 类。该类具有插槽data
(a data.frame
)和version
(character
),以及$
访问数据的方法slot
,例如
setClass("MyDb", representation(data = "data.frame", version = "character"))
setMethod("$", signature = "MyDb",
function(x, name) { return(x@data[[name]]) }
)
db <- new("MyDb", data = mtcars, version = "2.3.1")
正如我所料,使用db$mpg
accesses db@data$mpg
,但 usingdb$
不会在 RStudio 中显示任何自动完成选项。
我的方法是以sp
包为模型的,为此我确实看到了 a 中data
插槽的自动完成选项SpatialPointsDataFrame
,例如
library(sp)
data("meuse")
coordinates(meuse) <- ~ x + y
meuse$ # brings up autocomplete options for meuse@data slot
我可以使用特定的方法或策略来启用自动完成功能吗?
解决方案
通过克隆sp
库并系统地删除内容直到自动完成停止工作来解决这个问题。RStudio 自动完成似乎需要一个names
在包中导出的方法NAMESPACE
,例如
# in MyDb.R
names.MyDb <- function(x) names(x@data)
# in NAMESPACE
S3method(names,MyDb)
推荐阅读
- python-3.x - 选择一个文件夹会更新 tkinter 中的所有条目
- react-native - 反应原生圈拖动变换平移动画
- android - 即使在清单中添加了权限,仍然显示权限错误
- r - R (read_csv2) 将列转换为逻辑并用不平衡数据集中的 NA 替换值
- javascript - 在流程中如何接受异构数组并返回该数组
- javascript - SweetAlert 弹出窗口显示时间过长
- xml - 如何将Ofbiz中的下拉菜单设为只读?
- xamarin - 使用 xamarin 表单从列表视图中删除右滑动手势
- c++ - 无法使用 MinGW 5.3.0 构建 PSmove API,多个定义
- javascript - setHours() javascript 返回与预期不同的格式