我有一个 R 数组 start_arr
和 dim
ensions i
x j
x k
分别代表行数、列数和深度。每个维度都有名称。我可以将此数组转换为(一维)向量 intermediate_vec
。然后我需要将这个一维向量转换回原始的 i
x j
x k
数组 end_arr
。我只是在寻找通用函数 array2vec
和 vec2array
以一种在从数组到向量再到数组时保留元素排列方式的方式进行转换(即1,1,1 处的元素转到向量元素 1 并返回数组元素 1,1,1;1,2,1 处的元素转到向量元素 2 并返回数组元素 1,2,1 等)。元素在 intermediate_vec
中的特定放置方式并不重要,只要它们在 end_arr
中的位置与在 start_arr
中的位置完全相同即可>.
我可以用类似 C 的迭代语法来做到这一点,但我确信在 R 中有一些更快的声明方式来做到这一点。
最佳答案
1) 假设我们有数组arr
,如第一行所示。然后用c
转化为向量vec
,对每个元素进行加100的变换。然后用相同的名称 reshape 它,给出 arr2
。
arr <- array(1:24, 2:4, dimnames = list(letters[1:2], LETTERS[1:3], month.abb[1:4]))
vec <- c(arr)
arr2 <- replace(arr, TRUE, vec + 100)
# check
all(arr2 - arr == 100)
## [1] TRUE
2) 这也可行:
arr2a <- array(vec + 100, dim(arr), dimnames = dimnames(arr))
identical(arr2, arr2a)
## [1] TRUE
关于R - 将多维数组转换为向量并返回多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57857982/