gpt4 book ai didi

r - 如何添加列以扩展 R 中的矩阵

转载 作者:行者123 更新时间:2023-12-04 15:14:38 27 4
gpt4 key购买 nike

抱歉,我想不出一个更丰富的标题,但这是我的挑战。我有一个矩阵,我需要根据向量描述的参数在特定位置添加列。例如,如果我有以下矩阵:

1, 0, 1, 2, 0
0, 0, 1, 1, 1
1, 1, 0, 0, 0
2, 0, 1, 0, 2

但是对于特定的 R 包(未标记),我需要在特定位置添加 NA 列。我有一个与矩阵中的列相关的向量:
1, 1, 1, 2, 3

这表明第 1-3 列来自相同的采样周期,而第 4 列和第 5 列来自不同的采样周期。我需要使矩阵中的列数等于同一采样周期的最大数乘以采样周期数。在这种情况下,有三个 1(向量中任何唯一值的最大数量)和总共三个采样周期(向量中的最大数量)。所以我需要一个有 9 列(3 x 3)的矩阵。具体来说,我需要在第 4 列和第 5 列之后添加新的 NA 列。基本上,我只需要 NA 列作为占位符,以便有一个矩阵,其中每个样本周期的观察数(每列)相同(=3)(由向量中的数字表示)。这很难描述,但在这个虚构的例子中,我想最终得到:
1, 0, 1, 2, NA, NA, 0, NA, NA
0, 0, 1, 1, NA, NA, 1, NA, NA
1, 1, 0, 0, NA, NA, 0, NA, NA
2, 0, 1, 0, NA, NA, 2, NA, NA

这将由一个看起来像这样的向量来描述:
1, 1, 1, 2, 2, 2, 3, 3, 3

尽管我实际上不需要生成该向量,只需要生成矩阵即可。显然,在这种情况下添加这些列很容易,但是对于我的数据,我有一个更大的矩阵,最终会有大约 200 列。另外,我可能必须为大量数据集执行此操作。

任何人都可以帮助我在 R 中对此进行编码,以便我可以自动化扩展矩阵的过程吗?

感谢您的任何意见或建议!

编辑:
为了使事情与我的实际数据更相似,这里是一个可重现的矩阵和向量,类似于我当前的数据:
    m <- matrix(rpois(120*26, 1), nrow = 120, ncol = 26)
v <- c(1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 5, 5, 6, 6, 6, 6, 7)

最佳答案

假设 m是矩阵和 v是向量,你可以使用类似的东西

 t = table(v)
size = dim(m)[1] * max(t) # size of each block based on the longest
matrix(unlist(lapply(names(t), function(i) {
x = m[, v == i] # get the short block
c(x, rep(NA, size - length(x))) # extend it to size
})), dim(m)[1])

关于r - 如何添加列以扩展 R 中的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9142655/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com