首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >逻辑运算后停留的integer64子类(R)

逻辑运算后停留的integer64子类(R)
EN

Stack Overflow用户
提问于 2013-02-11 22:34:31
回答 1查看 73关注 0票数 2

当我从bit64派生integer64对象的子类,然后执行相等性测试时,结果包含逻辑数据,但仍然与我的类一起分类,而不是逻辑类。例如,这不会发生在integer中。

示例代码:

代码语言:javascript
复制
library(bit64)
x = as.integer64(5)
class(x) = c("Foo", "integer64")
x == 5

返回

代码语言:javascript
复制
[1] TRUE
attr(,"class")
[1] "Foo"

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

而如果我们对integer执行相同的操作:

代码语言:javascript
复制
y = as.integer(5)
class(y) = c("Foo", "integer")
y == 5

它返回逻辑

代码语言:javascript
复制
[1] TRUE

你知道为什么会发生这种事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-11 22:46:45

看看integer64变量的equals实现。

代码语言:javascript
复制
`==.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"的类。

创建变量abinattr是一个相当奇怪的函数,它检查两个输入是否具有兼容的大小,然后根据哪个输入具有dim属性返回其中一个的属性。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14814209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档