S3 中的美元建议方法
dollar suggestions method in S3
我现在正在制作一个 R 包,我必须在 returning 列表和具有 S3 属性的对象之间做出选择。
至于列表,好处是它对于初学者来说非常容易使用,因为美元符号使所有元素都容易找到。
不好的是,它删除了直接继承(我想 return 一个带有一些附加信息的 ts 对象)。
另一种方法是为我的 S3 class 设置美元,就像这个例子:
object <- 1
class(object) <- "MyClass"
attr(object,"MyAttribute") <- "This is a secret"
`$.MyClass` <- function(x,name) attr(object,name)
object$MyAttribute
但是,我对此有 2 个问题:
- 在 rstudio 中,在哪里设置美元部分匹配功能,以便用户将 "MyAttribute" 视为有效选择?
- 此外,这样做是一种很好的做法还是我应该继续使用简单列表
谢谢
我认为 RStudio 目前不允许这种定制。在其他 R 终端中,您可以使用 rcompgen
来生成完成,但 IIRC RStudio 会做自己的事情。
也就是说,您的问题似乎是基于错误的二分法:
Besides, is that a fine practice to do so or should I keep on using simple lists
您无需二选一。事实上,使用 S3 classes 的列表很常见,使用 attributes 来存储 S3 信息是 not common然后通过 $
访问。只需将您的 class 列为一个列表即可:
object = structure(
list(value = 1, MyAttribute = "This is a secret"),
class = "MyClass"
)
object$MyAttribute
我现在正在制作一个 R 包,我必须在 returning 列表和具有 S3 属性的对象之间做出选择。 至于列表,好处是它对于初学者来说非常容易使用,因为美元符号使所有元素都容易找到。 不好的是,它删除了直接继承(我想 return 一个带有一些附加信息的 ts 对象)。
另一种方法是为我的 S3 class 设置美元,就像这个例子:
object <- 1
class(object) <- "MyClass"
attr(object,"MyAttribute") <- "This is a secret"
`$.MyClass` <- function(x,name) attr(object,name)
object$MyAttribute
但是,我对此有 2 个问题:
- 在 rstudio 中,在哪里设置美元部分匹配功能,以便用户将 "MyAttribute" 视为有效选择?
- 此外,这样做是一种很好的做法还是我应该继续使用简单列表
谢谢
我认为 RStudio 目前不允许这种定制。在其他 R 终端中,您可以使用 rcompgen
来生成完成,但 IIRC RStudio 会做自己的事情。
也就是说,您的问题似乎是基于错误的二分法:
Besides, is that a fine practice to do so or should I keep on using simple lists
您无需二选一。事实上,使用 S3 classes 的列表很常见,使用 attributes 来存储 S3 信息是 not common然后通过 $
访问。只需将您的 class 列为一个列表即可:
object = structure(
list(value = 1, MyAttribute = "This is a secret"),
class = "MyClass"
)
object$MyAttribute