gpt4 book ai didi

r - 列表中的隐藏对象

转载 作者:行者123 更新时间:2023-12-03 03:56:26 26 4
gpt4 key购买 nike

我正在为包创建一个自定义对象,并且我想要一个包含两个对象的列表,但其中一个元素要“隐藏”

例如:

l = list(data = data.frame(a = 1:3, b = 4:6), hidden = list(obj1 = 1, obj2 = 2)) 

当我与列表交互时,我只想与 data 元素交互,而其他元素只能专门访问。

所以,如果我输入l

> l
a b
1 1 4
2 2 5
3 3 6

我可以使用自定义打印方法来管理。但我也希望能够做到

> l[,1]
[1] 1 2 3

我认为使用自定义打印方法是不可能的。

对于如何访问其他元素,我没有任何具体要求,但我猜是“R 友好”的。

我应该使用不同的类或创建一个新类吗?任何意见,将不胜感激。

最佳答案

您确实可以为您的对象定义一个自定义类。让

class(l) <- "myclass"

然后您可以为您感兴趣的函数定义特定于自定义的方法。例如,在 l[, 1] 的情况下,我们有

`[.myclass` <- function(x, ...) `[`(x[[1]], ...)

它接受这个双列表,然后在第一个列表元素上调用通常的[函数:

l[, 1]
# [1] 1 2 3

其他函数也可以完成同样的操作,例如print:

fun.myclass <- function(x, ...) fun(x[[1]], ...)

您仍然可以按照通常的方式访问第二个对象,

l$hidden
# $obj1
# [1] 1
#
# $obj2
# [1] 2

关于r - 列表中的隐藏对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53565560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com