问题描述
为重塑数组,我使用了网状包装中的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 (将#修改为@)