【问题标题】:How do I get multiple matrices within a loop and assign them automatically?如何在循环中获取多个矩阵并自动分配它们?
【发布时间】:2026-01-19 08:40:01
【问题描述】:

我有一个包含 15 个不同组的列表,我想在 for 循环中将它们转换为 15 个不同的矩阵。但是,我无法让它工作。

a=split(datalist,as.factor(datalist$groups))

当我这样做时,我可以通过键入 a[1] a[2] 等来可视化不同的组。我的每个组件(a[1]、a[2] 等)都在一个列表中,大小为 3x24 并且它们被认为是非数字的。使用 split 命令后,我得到了这些组件。但我需要它们作为数字,这就是为什么我认为我需要将它们转换为矩阵,为此,我尝试创建一个循环,将这些组件转换为 15 个不同的矩阵,大小为 3x24。

对于每个 i 数(从 1 到 15),我可以通过使用得到一个矩阵

matrix(unlist(a[i]), ncol=columnlength,byrow=rowlength)

这个命令。

然后我开始循环

    for (i in 1:15) {
  b[i]=matrix(unlist(a[i]), ncol=24,byrow=3)

    }

这是错误的,因为我使用的 b[i] 只指定了矩阵的一个单位。但我不知道用什么来代替 b[i]。

【问题讨论】:

    标签: r loops matrix


    【解决方案1】:

    这是我使用 mtcars 展示的一种方法

    首先,像你已经在做的那样拆分

    split.df <- split(mtcars, mtcars$cyl)
    

    然后,创建标记为 aletters[N] 的新变量

    newnames <- letters[1:length(split.df)]
    

    使用assign&lt;-的变量名和数据

    for (x in 1:length(newnames)) {
          assign(newnames[x], as.matrix(split.df[[x]]))
    }
    

    【讨论】:

      【解决方案2】:

      我无法理解您的问题。

      a=split(datalist,as.factor(datalist$groups))
      

      “a”结果是向量还是矩阵|data.frame?

      然后你创建“b”矩阵,3x24

      您想将每个“a”元素放入“b”矩阵,对吗?

      你的“a”有 24 个元素,每个元素有 3 个元素? (就像一个矩阵......)

      b <- as.matrix(a)
      

      无法解决您的问题?

      【讨论】:

        最近更新 更多