Erstellen einer 3D-matrix mit R?

Ich versuche zu bauen, eine 3D-matrix, indem die Schleife-Variablen in einen großen Datensatz (siehe den 'Kopf' an die Daten unten). Speziell, muss ich erstellen Sie eine matrix mit so vielen Zeilen als die maximale Anzahl von 'LastFixes' so viele Spalten, wie es gibt Themen (Sub = 36) und so viele Seiten wie es gibt Bedingungen (D. H., 8), und ich zuweisen möchten 1s in Folge von Beginn der FixStart bis zum Ende des FixEnd, und 0EN vom Ende einer FixEnd bis zum start der FixStart und so weiter und so Fort. So zum Beispiel für die ersten Zeilen der Daten brauche ich, um 1s in den ersten 165 Zeilen der matrix und dann die 0 aus Zeile# 166 bis 330. Mein R-code funktioniert, aber seltsamerweise bekomme ich andere zahlen als 0 und 1 in der matrix! Unten können Sie sehen, die 'Kopf' - als auch der R-code. Ich wäre dankbar wenn jemand mir helfen könnte dieses problem zu beheben. Vielen Dank

enter code here

head (data)

  Sub Item Condition FixStart FixEnd
1   1    4         7        1    165
2   1    4         7      331    600
3   1    4         7      623   1180
4   1    4         7     1202   1487
5   1    4         7     1511   1561
6   1    4         7     1696   2466


lastFix <- max(data$FixEnd)


datamatrix<-array(0,dim=c(lastFix,36,8))

for (i in 1:length(data$Sub)){ 
  n <- data[i,1]
  if (data[i,3] == "1"){
    for (j in data[i,4]:data[i,5]){
      datamatrix[j,n,1] <- datamatrix[j,n,1]+1
    }
  }else 
  if (data[i,3] == "2"){
    for (j in data[i,4]:data[i,5]){
      datamatrix[j,n,2] <- datamatrix[j,n,2]+1
    }
  }else 
  if (data[i,3] == "3"){
    for (j in data[i,4]:data[i,5]){
      datamatrix[j,n,3] <- datamatrix[j,n,3]+1
    }
  }else
  if (data[i,3] == "4"){
    for (j in data[i,4]:data[i,5]){
      datamatrix[j,n,4] <- datamatrix[j,n,4]+1
    }
  }else
  if (data[i,3] == "5"){
    for (j in data[i,4]:data[i,5]){
      datamatrix[j,n,5] <- datamatrix[j,n,5]+1
    }
  }else
  if (data[i,3] == "6"){
    for (j in data[i,4]:data[i,5]){
      datamatrix[j,n,6] <- datamatrix[j,n,6]+1
    }
  }else
  if (data[i,3] == "7"){
    for (j in data[i,4]:data[i,5]){
      datamatrix[j,n,7] <- datamatrix[j,n,7]+1
    }
  }else
  if (data[i,3] == "8"){
    for(j in data[i,4]:data[i,5]){
      datamatrix[j,n,8] <- datamatrix[j,n,8]+1
    }
  }
}
InformationsquelleAutor user2403900 | 2013-05-21
Schreibe einen Kommentar