gpt4 book ai didi

r - 用于 bool 值的 as.integer() 和 +0L 之间有什么区别?

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

我看到了 +0L用于回答问题并发现它适用于矩阵/数据框/数据表,其中 as.integer()将无法保留初始数据类。

> a <- matrix(TRUE, nrow=3, ncol=3)
> a
[,1] [,2] [,3]
[1,] TRUE TRUE TRUE
[2,] TRUE TRUE TRUE
[3,] TRUE TRUE TRUE
> as.integer(a)
[1] 1 1 1 1 1 1 1 1 1
> a+0L
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 1
[3,] 1 1 1
  • 这些方法之间还有其他区别吗?
  • 使用一种或另一种时的优缺点和注意事项是什么?

  • [编辑:]评论中有很多智慧!显然有许多不同的方法可以达到相同的结果,其中一些我不知道,所以:
  • 实现什么的其他方法是什么a+0L做?
  • 最佳答案

    x + 0L是对 x 的元素智能操作;因此,它通常会保留数据的形状。 as.integer不是:它采用整个结构——这里是一个矩阵——并将其转换为一维整数向量。

    也就是说,在一般情况下,我强烈建议使用 as.integer并劝阻 + 0L作为一个聪明的黑客(记住:通常,聪明≠好)。如果您想保留数据的形状,我建议使用评论中的 David 方法,而不是 + 0L黑客:

    a[] = as.integer(a)

    这使用了 as.integer 的正常含义,但结果分配给 a 的各个元素, 而不是 a本身。换句话说, a的形状保持不变。

    关于r - 用于 bool 值的 as.integer() 和 +0L 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28412049/

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