создать трехмерный массив различной длины - PullRequest
2 голосов
/ 11 июля 2010

Я новичок в R. Я хочу создать трехмерный массив, но я не могу определить длину каждого измерения.Я анализирую оценки учеников в классе.Есть 10 классов, но у них разное количество студентов.И "Оценка" будет 100-90, 89-80, 79-70 ... до тех пор, пока не будет ученик, который получил соответствующие оценкиЯ собирался использовать пару циклов for с множественным массивом.Если я создаю 3 dim массив,

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

Ответы [ 2 ]

4 голосов
/ 11 июля 2010

Вы действительно не хотите использовать матрицу для этого. Фрейм данных позволяет вам иметь комбинацию типов данных.

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>
2 голосов
/ 11 июля 2010

Вы не можете.

Массив имеет фиксированные размеры. Вы можете использовать максимум по каждому измерению и выделить его вместе с NA для заполнения.

Списки являются альтернативой для различной длины и даже для разных типов компонентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...