微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有奇怪行为的array_reshape

如何解决具有奇怪行为的array_reshape

为重塑数组,我使用了网状包装中的array_reshape()。出于某些目的,我需要仅由NA组成的预分配数组。现在,让我们看看array_reshape()的作用。

data <- c(NA,NA,NA)
a <- as.array(data)
a <- reticulate::array_reshape(a,dim = c(1L,1L,3L),order = "F")

a的结果是:

logi[1,1,1:3] TRUE TRUE TRUE

使用dim()对此列主要排序样式(Fortran样式)进行比较会得出不同的结果

data <- c(NA,NA)
a <- as.array(data)
dim(a) <- c(1L,3L)

a的结果是预期的结果:

logi[1,1:3] NA NA NA

进一步测试后,我发现如果数组中没有数字或字母数字(例如字符)值,则NA会转换为TRUE。如果例如数值在数组中都按预期工作

data <- c(NA,3)
a <- as.array(data)
a <- reticulate::array_reshape(a,order = "F")
logi[1,1:3] NA NA 3

但是,如果在数组中也使用逻辑值,结果将是

data <- c(NA,FALSE)
a <- as.array(data)
a <- reticulate::array_reshape(a,1:3] TRUE TRUE FALSE

在我看来,这很“危险”,因为以后无论原始值是NA还是逻辑TRUE,都无法区分。使用dim()总是会得到预期的结果。

PS:我知道内部将NA视为长度为1的逻辑常数。

您是否有任何提示或建议使用array_reshape()解决此重塑问题?

预先感谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。