R 中的循环数组

2024-04-21

我遇到以下问题:

我有一个尺寸为 dim(x)= (46, 13, 30) 的大数组“x”。 我正在尝试计算一个新的矩阵“M”(30,598),它基本上包含第一列中每个“切片”的第一个元素,第二列中的第二个元素,依此类推......最终,我想与包含每个网格单元的所有元素的向量(M 的列)。

使用以下函数,我将能够计算矩阵 M。但是,考虑到大型数组,这并不完全是一个用户友好的解决方案:

M <- cbind(x[1,1,],x[1,2,],x[1,3,],x[1,4,],x[2,1,],x[2,2,], x[2,3,],x[2,4,]......)

这就是为什么我想使用 for 循环。不幸的是我不知道如何。

这是我到目前为止尝试过的(不成功):

M  <- matrix(NA, nrow = 6, ncol = 20)
for (i in 1:120){
    M[i] <- cbind(x[,,i])
} 

该循环仅创建第一个向量(每个“切片”[1,1,] 的第一个元素),然后中止。

关于如何完成这项工作有什么想法吗? 非常感谢您的帮助!


样本数据:

set.seed(1) ; x <- array(rnorm(2*3*5), dim = c(2, 3, 5))

# , , 1
# 
# [,1]       [,2]       [,3]
# [1,] -0.6264538 -0.8356286  0.3295078
# [2,]  0.1836433  1.5952808 -0.8204684
# 
# , , 2
# 
# [,1]       [,2]      [,3]
# [1,] 0.4874291  0.5757814 1.5117812
# [2,] 0.7383247 -0.3053884 0.3898432
# 
# , , 3
# 
# [,1]        [,2]        [,3]
# [1,] -0.6212406  1.12493092 -0.01619026
# [2,] -2.2146999 -0.04493361  0.94383621
# 
# , , 4
# 
# [,1]      [,2]        [,3]
# [1,] 0.8212212 0.9189774  0.07456498
# [2,] 0.5939013 0.7821363 -1.98935170
# 
# , , 5
# 
# [,1]       [,2]       [,3]
# [1,]  0.61982575 -0.1557955 -0.4781501
# [2,] -0.05612874 -1.4707524  0.4179416

然后排列维度,apply() identity(或者,等价地,as.vector甚至c, see ?apply) 到第三维并转置:

res <- t(apply(aperm(x, c(3, 2, 1)), 1, identity))

#            [,1]       [,2]        [,3]        [,4]        [,5]       [,6]
# [1,] -0.6264538 -0.8356286  0.32950777  0.18364332  1.59528080 -0.8204684
# [2,]  0.4874291  0.5757814  1.51178117  0.73832471 -0.30538839  0.3898432
# [3,] -0.6212406  1.1249309 -0.01619026 -2.21469989 -0.04493361  0.9438362
# [4,]  0.8212212  0.9189774  0.07456498  0.59390132  0.78213630 -1.9893517
# [5,]  0.6198257 -0.1557955 -0.47815006 -0.05612874 -1.47075238  0.4179416

同样,根据 @Frank 的建议:res <- matrix(aperm(x, c(3, 2, 1)), dim(x)[3])

Finally:

desired_output <- cbind(x[1,1,],x[1,2,],x[1,3,],x[2,1,],x[2,2,], x[2,3,])
all.equal(res, desired_output)

# [1] TRUE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R 中的循环数组 的相关文章

  • 求解非线性方程组

    我正在尝试求解以下四个方程组 我尝试过使用 rootSolve 包 但似乎我无法通过这种方式找到解决方案 我正在使用的代码如下 model lt function x F1 lt sqrt x 1 2 x 3 2 1 F2 lt sqrt
  • 如何处理包内部的 R 数据?

    我正在开发的 R 包需要多个 R 数据对象 例如预先计算的模型和参数 目前 我将包的 数据 目录中的每个对象放在单独的 RData 文件中 使用该包时 用户可以使用 数据 功能将这些对象附加到他们的环境中 我想要的行为是 在加载包时 数据对
  • 使用 numpy 在 python 中执行最大方差旋转

    我正在研究矩阵的主成分分析 我已经找到了如下所示的组件矩阵 A np array 0 73465832 0 24819766 0 32045055 0 3728976 0 58628043 0 63433607 0 72617152 0 5
  • 通过 r 中的组变量进行汇总

    我有一个数据框如下 head newStormObject FATALITIES INJURIES PROPVALDMG CROPVALDMG EVTYPE total 1 0 15 2 5e 05 0 TORNADO 15 2 0 0 2
  • 找到一个恰好出现了 N/2 次的数字

    这是我的面试问题之一 给定一个包含 N 个元素的数组以及元素出现的位置正好 N 2次 其余 N 2 个元素是unique 您如何找到运行时间更好的元素 请记住 元素未排序 您可以假设 N 是偶数 例如 input array 10 2 3
  • R 中 if-else 中的逻辑运算符

    我有一个名为 mat 的下表 5 列和 3 行 AC CA RES 1 0 2 2 1 3 0 0 0 1 正在执行的操作是mat 1 mat 1 mat 2 我正在测试以下内容 1 如果一行的两列都为零 则结果应为 NA 2 如果一行中只
  • R -> kdb:将 R 数据作为二进制对象传递给 kdb+

    最有效的插入方式是什么R对象 更具体地说 时间序列表示为xts or data table对象 即基于时间和数字的列 到kdb 数据库 我能够通过以下方式找到唯一涉及字符串序列化的解决方案q所描述的表达式here https stackov
  • dplyr:同一公式中全年每日值的总和以及特定每日值的总和

    Using df数据框 date lt rep as Date seq as Date 2003 01 01 as Date 2005 12 31 by 1 format Y m d 9 site lt c rep Site 1 3 109
  • 将数据框分成相等的部分

    我有一个示例数据框 df lt data frame x 1 112 y runif 112 有没有办法打印数据框列表 其中列表的第一部分包含行1 10 第二11 20等等 直到最后 111 112 你可以使用split with rep
  • MATLAB:MEX 矩阵除法给出的结果与 m 文件不同

    我使用 MATLAB 的编码器工具创建了矩阵指数函数的 MEX 版本 以在另一组函数中使用 问题是 MEX 版本给出的结果与原始 m 文件不同 经过调试 我认为这是因为MEX文件和m文件没有做相同的矩阵除法 或者 MEX 文件首先就有问题
  • 基于列名称的字符向量的子数据框[重复]

    这个问题在这里已经有答案了 菜鸟问题 提前感谢您的耐心 我有一个数据框 vals lt c 1 1 1 1 testdf lt data frame var1 vals var2 vals var3 vals 我有一个变量名称的字符向量 v
  • 超过阈值的时间序列值的聚合计数(按年月)

    我现在正在学习 R 并使用 SEAS 包来帮助我在 R 中进行一些计算 并且数据与 SEAS 包喜欢的格式相同 这是一个时间序列 require seas data mscdata dat int lt mksub mscdata id 1
  • rollapply用于累积窗口[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我试图弄清楚如何在数据窗口上使用 R rollapply 该窗口从数据的开头累积扩展 在时间 t 滚动应用应使用 1 t
  • 基于数组对列表进行排序

    我正在尝试根据字符串数组对自定义列表进行排序 但我失败得很惨 例如它根本没有对列表进行排序 Public class CrateOrder public int Id get set public string Name get set p
  • 在 Rlattice xyplot 上分别控制轴刻度和轴线

    我怎样才能去除周围的盒子xyplot 同时保留轴刻度刻度线 本着爱德华 塔夫特 Edward Tufte 极简主义数据图形美学的精神 这些轴线是 非数据墨水 并且可以 应该 被 擦除 library lattice my df lt dat
  • 计算不包括当前值的平均值

    我有下表 a b avg 1 1 7 3 2 1 0 3 3 1 2 3 4 2 1 2 5 2 3 2 其中 a 和 b 是数据 avg 计算按 a 分组的 b 的平均值 现在我想计算按 a 分组的 b 的平均值 avg2 不包括当前值
  • 解码Json数据数组并插入到mysql

    这个问题可能已经在这里问过 但我尝试搜索找不到它 我有如下 Json 数据 CityInfo CityCode 5599 Name DRUSKININKAI CityCode 2003 Name KAUNAS CityCode 2573 N
  • PHP - 递归搜索数组中的键和子键,成功时返回键['subkey]

    因此 我编写了一个函数 该函数可以在数组中深入搜索两个级别以查找键和子键对 基本上是在寻找key subkey 如果找到 则返回key subkey 我正在寻找一种以真正递归的方式执行此操作的方法 并根据需要进行尽可能多的深度搜索 直到到达
  • dplyr +“meta”-columns:当列包含要使用的其他列的名称而不是数据时

    我想知道以下问题在 dplyr 中是否有一个优雅的解决方案 要提供一个简单的可重现示例 请考虑以下 data frame df lt data frame a 1 5 b 2 6 c 3 7 ref c a a b b c stringsA
  • 如何在 R 中“推断”面板数据的值?

    我有一个带有 NA 值的面板数据 如下所示 uid year month day value 1 1 2016 8 1 NA 2 1 2016 8 2 NA 3 1 2016 8 3 30 4 1 2016 8 4 NA 5 1 2016

随机推荐