2016-04-18 19 views
0

Ich habe eine data.frame mit zwei Spalten, die wie folgt aussehen:R - unembedding eine Liste von Listen aus einer data.frame Spalte

sid  calibration 
sid201  [['left', '37.1', '18.9', '0.0', '0.9\xb0', '0.4\xb0'], ['right', '42.2', '24.0', '0.0', '1.0\xb0', '0.6\xb0']] 
sid202  [['left', '7.4', '13.6', '0.0', '0.2\xb0', '0.3\xb0'], ['right', '14.6', '15.1', '0.0', '0.3\xb0', '0.4\xb0']] 

und so weiter für jede Zeile.

Das Problem, das ich habe, ist herauszufinden, wie man die Informationen, die ich brauche, aus der Spalte "Kalibrierung" extrahiert.

Ich möchte den "Kalibrierungs" -Faktor in zwei Reihen analysieren, wobei "links" und "rechts" Ebenen eines neuen Faktors "Auge" sind und jedes der anderen 5 Elemente einer eigenen Spalte zugeordnet ist - Sagen wir einfach die Spalten a: e.

+0

Imo - wenn ich versuche, Ihrem Beispiel ich stecken folgen die df Erstellung - Die Fehlermeldung lautet: Fehler in df $ sid: Objekt vom Typ 'closure' ist keine Teilmenge – WGray

Antwort

0

Wenn die Daten gespeichert sind, wie Sie sagen, Sie könnten die folgenden für eine data.frame namens df versuchen:

# stack the data 
dfStacked <- data.frame("sid"=c(df$sid, df$sid), 
      "calibration"=c(sapply(df$calibration, function(i) c(i[[1]])), 
          sapply(df$calibration, function(i) c(i[[2]])))) 
# split the data vectors 
calibList <- strsplit(dfStacked$calibration, split=", ") 

# put the results into a data.frame, loops through variables in outer loop 
# loops through observations in inner row to get variables 
results <- as.data.frame(sapply(1:5, 
      function(element) cbind(sapply(calibList, function(row) c(row[[i]]))))) 
# add to dataset 
dfDone <- cbind(dfStacked$sid, results) 
Verwandte Themen