【问题标题】:Creating multiple matrices with a for loop使用 for 循环创建多个矩阵
【发布时间】:2015-07-06 14:41:40
【问题描述】:

我想创建ncol(y) 矩阵的数量,从y 矩阵中获取每一列并复制rep 次数。不过,我没有正确执行 for 循环。重申一下,下面我想得到三个单独的矩阵,第一个矩阵的值将是 1 到 100 重复 200 次(它们来自 y 的第一列),第二个将向量 101-200 重复 200 次(第二列y) 的值,第三个值 201-300 重复 200 次(y 的第三列)。输出名称最好是 matrix1、matrix2 或列表。

y <- matrix(1:300,100,3)
rep = 200

for (i in 1:ncol(y)) {
        newmatrix <- replicate(rep,y[,i])
        valuematrix[[i]] <- newmatrix
}

【问题讨论】:

  • valum[[paste0("matrix", i)]] &lt;- newmatrix
  • 我猜你需要在循环之前用valuematrix &lt;- list()valuematrix &lt;- vector("list",ncol(y))初始化
  • @Khashaa :我收到一个错误:值错误 [[paste0("matrix", i)]]

标签: r loops for-loop matrix


【解决方案1】:

您缺少 valuematrix 的初始化。您可以通过

valuematrix <- list()

就在 for 循环之前。

您也可以考虑使用 lapply 来解决这个问题。它会自动将矩阵存储在列表中。

y <- matrix(1:300, 100, 3)
rep = 200

matList <- lapply(1:ncol(y), function(i) replicate(rep, y[,i])) 

【讨论】:

    猜你喜欢
    • 2015-06-12
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 2013-06-25
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多