创建不同长度的三维数组

时间:2010-07-11 13:58:46

标签: arrays r grouping

我是R的初学者 我想创建一个三维数组,但我不能定义每个维度的长度。 我在课堂上分析学生的分数。有10个班级,但学生人数不同。 “成绩”将是100-90,89-80,79-70 ......直到有任何学生获得相关分数。 我打算用多个数组的for循环。 如果我创建一个3 dim数组,

arr<-array(data, dim=c(??,??,??)), dimnames= list("class","grade","average Marks") )

2 个答案:

答案 0 :(得分:4)

你真的不想为此使用矩阵。数据框允许您混合使用数据类型。

clasIDs <- c("Firsthour", "Secondhour", "Thirdhour")
class.size <-c(3, 5, 2)  # small sizes for illustration
cls.frame <- data.frame(clasID=rep(clasIDs, class.size), 
                      student.ID = unlist(sapply(class.size, function(x) seq(from=1, to=x))),
                      grade=factor(rep(NA,10) , levels=c("100-90", "89-80", "79-70")) )

> cls.frame
       clasID student.ID grade
1   Firsthour          1  <NA>
2   Firsthour          2  <NA>
3   Firsthour          3  <NA>
4  Secondhour          1  <NA>
5  Secondhour          2  <NA>
6  Secondhour          3  <NA>
7  Secondhour          4  <NA>
8  Secondhour          5  <NA>
9   Thirdhour          1  <NA>
10  Thirdhour          2  <NA>

答案 1 :(得分:2)

你做不到。

数组具有固定的尺寸。您可以使用每个维度的最大值,并将其与NA一起分配以填写。

列表是不同长度的替代方案,甚至是不同的组件类型。