如何在循环中获取多个矩阵并自动分配它们?

时间:2017-08-01 16:19:28

标签: r loops matrix

我有一个列表,其中包含15个不同的组,我想在for循环中转换为15个不同的矩阵。但是,我无法使其发挥作用。

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

当我这样做时,我可以通过键入[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]。

2 个答案:

答案 0 :(得分:0)

我无法理解你的问题。

a=split(datalist,as.factor(datalist$groups))
" a"结果是向量或矩阵| data.frame?

然后你的箱子" b"矩阵,3x24

你想把每一个" a"元素进入" b"矩阵,对吗?

你的" a"有24个元素,每个元素3个元素? (像矩阵......)

b <- as.matrix(a)

无法解决您的问题?

答案 1 :(得分:0)

以下是我使用mtcars

展示的方法

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

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

然后,创建标记为aletters[N]

的新变量
newnames <- letters[1:length(split.df)]

使用assign <-变量名称和数据

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