gpt4 book ai didi

r - 在 R 中隐藏函数的结果

转载 作者:行者123 更新时间:2023-12-04 09:10:23 26 4
gpt4 key购买 nike

我创建了一个具有四个输出参数的函数,例如:

myfuction<-function(...){     
#Inside the function I created four results A, B, C, and D.
A = ...
B = ...
C = ...
D = ...
z<-list(MacKinnon=A,regression=B,proof=C, res=D)
return(z)
}

结果 D 对应于表示回归残差的数字向量。

我的问题是如何在不删除它的情况下隐藏此结果?也就是说,我希望当我运行该函数时,出现结果 A、B 和 C,但不出现结果 D。

如果我想访问结果 D,我必须做这样的事情:
X <-myfuction (...)
X$res

能够观察残差。

最佳答案

我只会使用 S3 类。基本上,只需标记对象 z与特定的类(class)

myfunction <- function(){     
#Inside the function I created four results A, B, C, and D.
A = 10;B = 20;C = 30; D = 40
z = list(MacKinnon=A, regression=B, proof=C, res=D)
class(z) = "my_fun" # Tagging here
return(z)
}

my_fun 创建 S3 打印功能
print.my_fun = function(x, ...) print(x[1:3])

然后
R> x = myfunction()
R> x
$MacKinnon
[1] 10

$regression
[1] 20

$proof
[1] 30


R> x$res
[1] 40

给你你想要的。

一些评论/指示。
  • 通常,当您分配类(class)时,您会使用类似的东西
    class(z) = c("my_fun", class(z))

    然而,由于我们刚刚创建了 z在上面的行中,这不是必需的。
  • 目前print方法去除了任何额外的类(在这个例子中,只有一个类,所以这不是问题)。如果我们想维护多个类,我们会使用
    print.my_fun = function(x, ...) {
    x = structure(x[1:3], class = class(x))
    NextMethod("print")
    }

    函数子集的第一行x ,但维护所有其他类。第二行,然后通过 x下一个 print.class_name功能。
  • 关于r - 在 R 中隐藏函数的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37396203/

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