R - 将多维数组转换为向量并返回多维数组

标签 r arrays multidimensional-array vector

我有一个 R 数组 start_arrdimensions i x j x k分别代表行数、列数和深度。每个维度都有名称。我可以将此数组转换为(一维)向量 intermediate_vec。然后我需要将这个一维向量转换回原始的 i x j x k 数组 end_arr。我只是在寻找通用函数 array2vecvec2array 以一种在从数组到向量再到数组时保留元素排列方式的方式进行转换(即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/

相关文章:

r - 查找具有相应名称的命名向量的唯一值

java - Android 解析 JSON 数组

java - 在两个循环之外访问字符串数组

java - Java中的多维数组长度

c - strcpy 通过传递给函数的字符串数组?

c - 一维位于 [1] 的二维数组

r - 在 dplyr 过滤器中使用 "any"运算符

html - 在 R 中自定义传单 map 图标

c - 在 C 中搜索、排序和打印排序的二维整数数组

r - 生存剧情传说