2016-10-10 3 views
0

Ich habe 3 Vektoren: MRI, MRI_high, MRI_low. Bei den _low und _high ist die Hälfte der Länge der ersten. Mein Ziel ist es, sie in ein und dasselbe Element zu bringen, so dass ich Iterationen machen kann (ich habe eine Reihe von Vektoren nach dem gleichen Format)R data.frame Erklärung der Ergebnisse

Als ich schrieb: data.entry(MRI, MRI_high, MRI_low) Ein Fenster tauchte mit meinen Daten in Spalten angeordnet und richtig Länge, Problem, ich kann das nicht benutzen. Wenn ich verwendet Die Funktion gab mir irgendwie 3 Elemente gleicher Länge, durch Duplizieren der kürzeren Listen.

Was ist eine Lösung dafür? Und benötigen Datenrahmen für ihre Elemente gleiche Längen?

Außerdem habe ich versucht, Listen verwenden, aber meine Werte sind dann numerisch nicht

+1

Ein Datenrahmen ist eine Tabelle, und in der Regel hat jede Spalte in einer Tabelle die gleiche Anzahl von Zeilen - also ja, Sie brauchen gleiche Längen. –

Antwort

0

Eine Möglichkeit, sie in einem list und Pad mit NA wird zu platzieren, um das length s vor dem Konvertieren zu ‚data.frame‘ gleich zu machen

lst <- mget(ls(pattern = "MRI.*")) 
df1 <- data.frame(lapply(lst, `length<-`, max(lengths(lst)))) 
+0

Ich bin verwirrt, Wie schaffe ich es, die NA hinzuzufügen, wenn zum Beispiel Rechenkorrelationen, wird die NA ignoriert werden? – rannoudanames

+0

@rannoudanames Ich bin mir nicht sicher, was du meintest. Die obige Lösung erzeugt einen "data.frame" durch Auffüllen von NA für Vektor, der eine geringere Anzahl von Elementen aufweist, um die Länge gleich zu halten. – akrun

0

fand ich eine Lösung für mein Problem:

ich die Liste verwendet, jedoch, wenn Statistiken Berechnung I as.numeric(unlist()) verwendet, die mir noch zu durchlaufen können.

Obwohl weitere Kommentare zu diesem für mich zu verstehen, dieses seltsame Datenrahmenverhalten zu verstehen!