gpt4 book ai didi

r - 为什么我收到错误 "invalid type closure"?

转载 作者:行者123 更新时间:2023-12-04 10:08:18 25 4
gpt4 key购买 nike

W <- ecdf(c(1,2,3))
W
O <- sum(W)
W

为什么这不起作用?我明白了
Error in sum(W) : invalid 'type' (closure) of argument

不太了解其他类似帖子的答案,因为我对此很陌生。我如何解决它?

最佳答案

ecdf函数实际上是一个函数,即它的值是另一个函数。在 R 中,我们称之为“函数”的东西实际上是“闭包”。它们的主体是代码块,通过键入函数名称很容易看到。然而,它们也有一个环境,其中包含在创建闭包时定义的变量的局部值。

如果您不想为 W 提供不同于用于创建它的原始值的新值,那么您需要从保存调用时存在(和创建)的值的环境中提取值至ecdf与 .... 等待它 .... environment -功能。 ls函数将返回该环境内容的名称:

 str(W)
#--------
function (v)
- attr(*, "class")= chr [1:3] "ecdf" "stepfun" "function"
- attr(*, "call")= language ecdf(1:11)
#---------------
# Just asking to see that environment is less than satisfying
environment(W)
#<environment: 0x3cd392588>
# using `ls` is more informative
ls( environment(W) )
#[1] "f" "method" "nobs" "x" "y" "yleft" "yright"

要提供原始 x 值的总和:
> sum( environment(W)$x )
[1] 6

可以通过 as.list 强制数据对象来显示环境的全部内容。 :
> as.list(environment(W))
$nobs
[1] 3

$x
[1] 1 3 5

$y
[1] 0.3333333 0.6666667 1.0000000

$method
[1] 2

$yleft
[1] 0

$yright
[1] 1

$f
[1] 0

关于r - 为什么我收到错误 "invalid type closure"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33023508/

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