gpt4 book ai didi

r - as.raw 和其他 as.* 函数在应用于数组时会删除维度属性

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

我在 R 中似乎有一个简单的问题,我没有找到简单的解决方案:我想将整数数组转换为原始数组。其他简单类型之间的转换也有类似的问题。我发现了以下非优雅的解决方案:

  1. 使用 as.raw 并使用旧尺寸创建一个新数组:
a <- array(255:261,c(2,3))
b <- array(as.raw(a),dim(a))
  1. 使用 as.raw 并重置维度属性:
a <- array(255:261,c(2,3))
b <- as.raw(a)
dim(b) <- dim(a)
  1. 更改存储模式
a <- array(255:261,c(2,3))
b <- a
storage.mode(b) <- "raw"

对于应该简单的事情,所有解决方案都非常复杂。在解决方案 1 和 2 中,as.raw(与其他 as.* 函数一样)删除了 dim 属性,因此必须重置它。解决方案 2 和 3 不直接支持函数式编程风格,即它们不返回具有新类型的 a 的副本,因此不能轻松地与管道一起使用。当然,我可以创建一个新函数来支持函数式编程,但我猜我忽略了一些基本的东西。请赐教。谢谢。

最佳答案

其他一些转换类型的方法是:

b <- "dim<-"(as.raw(a), dim(a))

b <- "storage.mode<-"(a, "raw")

b <- apply(a, 2, as.raw)

如果类型兼容,as.raw 不兼容,您可以使用:

a[]  <- as.double(a)

数据:

a <- array(55:61,c(2,3))

不推荐的方式(感谢@Roland 的评论),因为 raw 是一个隐式类,显式设置它可能会产生意想不到的后果,是:

b <- a; class(b) <- "raw"

关于r - as.raw 和其他 as.* 函数在应用于数组时会删除维度属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58375085/

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