gpt4 book ai didi

r - 逻辑运算后保留的 integer64 的子类 (R)

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

当我从 bit64 对 integer64 对象进行子类化,然后执行相等测试时,结果包含逻辑数据,但仍归入我的类而不是逻辑类。例如,整数不会发生这种情况。

示例代码:

library(bit64)
x = as.integer64(5)
class(x) = c("Foo", "integer64")
x == 5

返回
[1] TRUE
attr(,"class")
[1] "Foo"

请注意,它仍然具有“Foo”类

而如果我们对整数做同样的事情:
y = as.integer(5)
class(y) = c("Foo", "integer")
y == 5

它返回逻辑
[1] TRUE

知道为什么会这样吗?

最佳答案

查看integer64的equals的实现变量。

`==.integer64`
function (e1, e2)
{
a <- binattr(e1, e2)
e1 <- as.integer64(e1)
e2 <- as.integer64(e2)
ret <- logical(max(length(e1), length(e2)))
.Call("EQ_integer64", e1, e2, ret)
a$class <- minusclass(a$class, "integer64")
setattributes(ret, a)
ret
}

返回值被明确赋予一个类属性等于 a 的类。 , 减去类 "integer64" .
binattr ,创建变量 a是一个相当奇怪的函数,它检查两个输入是否具有兼容的大小,然后返回一个或另一个的属性,这取决于哪些具有 dim属性。

关于r - 逻辑运算后保留的 integer64 的子类 (R),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14814209/

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