具有奇怪行为的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 (将#修改为@)