Angenommen Entadressierung habe ich einen Datenrahmen DF genannt:Fehler beim Spalten in einem Datenrahmen
options(stringsAsFactors = F)
letters <- list("A", "B", "C", "D")
numbers <- list(list(1,2), 1, 1, 2)
score <- list(.44, .54, .21, .102)
DF <- data.frame(cbind(letters, numbers, score))
Beachten Sie, dass alle Spalten in dem Datenrahmen der Klasse sind „Liste“.
Werfen Sie auch einen Blick auf die Struktur: DF $ Zahlen [1] ist auch eine Liste
Ich versuche, jede Spalte fehlenden oder.
DF$letters <- unlist(DF$letters)
DF$score <- unlist(DF$score)
DF$numbers <- unlist(DF$numbers)
Da jedoch, DF $ Zahlen [1] auch eine Liste ist, bin ich zurückgeworfen dieser Fehler:
Error in `$<-.data.frame`(`*tmp*`, numbers, value = c(1, 2, 1, 1, 2)) :
replacement has 5 rows, data has 4
Gibt es eine Möglichkeit, dass ich die ganze Spalte fehlenden oder kann, und Halten Sie die Werte Zellen wie DF $ Zahlen [1] als Zeichenvektor wie c (1,2) oder 1,2?
Im Idealfall würde Ich mag DF, so etwas zu sehen, wobei die einzelnen Werte in den Nummernspalt noch vom Typ int sind:
letters numbers score
A 1,2 .44
B 1 .54
C 1 .21
D 2 .102
Ziel ist es, dann zu einer csv des Datenrahmen zu schreiben Datei.
Hallo! Das ist ein guter Tipp, aber DF $ Zahlen sind immer noch im Listenformat. Wenn ich versuche, unlist() die DF $ Nummern <- unlist (lapply (DF $ numbers, unlist)), werde ich den gleichen Fehler zurückgeworfen, den ich in meinem ursprünglichen Beitrag beschrieben habe – Sheila
Die * Zahlen * Spalte wird Liste wenn die Elemente enthalten Vektor wie 'c (1,2)'. Wenn Sie nicht wollen, dass es eine Liste ist, können Sie die Elemente als String als 'DF $ numbers <- sapply (DF $ numbers, toString)' einfügen. – Psidom
Ich sehe, Ja, ich möchte die Elemente der Liste vom Typ int sein. Wenn ich versuche, DF mit write.csv zu schreiben, werde ich den Fehler "Write.table (DF, test.csv", col.names = NA, sep = "," , dec = ".",: nicht implementierter Typ 'list' in 'EncodeElement' " – Sheila