df ist eine Liste von Tabellen (von HTML skaliert und als Listen gespeichert) Ich möchte in Datenrahmen konvertieren.Verwendung von lapply mit as.data.frame
as.data.frame(df[1])
funktioniert kein Problem. Doch sowohl
df_2 <- lapply(df, as.data.frame)
und
df_3 <- lapply(df, function(x) {
as.data.frame(x)
})
nicht zu Datenrahmen konvertieren:
> class(df[1])
[1] "data.frame"
> class(df_2[1])
[1] "list"
> class(df_3[1])
[1] "list"
Bearbeiten mit reproduzierbaren Beispiel:
a <- tribble(
+ ~ x, ~ y,
+ 1, 2
+)
> b <- tribble(
+ ~ x, ~ y,
+ 3, 4
+)
> a_list <- as.list(a)
> b_list <- as.list(b)
master_list <- list(a_list, b_list)
a_df <- as.data.frame(master_list[1])
> class(a_df)
[1] "data.frame"
master_df <- lapply(master_list, as.data.frame)
> class(master_df[1])
[1] "list"
class(master_df[[1]])
[1] "data.frame"
Tat [[]] wurde benötigt, um Container herauszufiltern ... aber diese st nicht krank nicht den ganzen Grund lösen, dies zu tun in meinem ursprünglichen Beispiel, die eine Funktion entfernt leere Zeilen aus jeder Tabelle zu nennen ist:
> clear_empty <- master_df[!apply(master_df == "", 1, all), ]
Error in apply(master_df == "", 1, all) :
dim(X) must have a positive length
Vielleicht werde ich eine andere Funktion, dies zu tun finden müssen, obwohl ich mochte die Einfachheit des einen oben.
Könnten Sie ein reproduzierbares Beispiel geben ([MCVE])? –
Auch 'lapply' gibt eine Liste zurück. Schwer zu sagen, ohne ein Beispiel zu sehen, aber Sie könnten versuchen, das Element mit '[[' 'anstelle von' ['' zu extrahieren. '[' 'extrahiert das Element, während '[' das Element und den Container (in diesem Fall wahrscheinlich eine Liste) –
@MikeH extrahiert. Tatsächlich hatte ich das vergessen. – Albatrosspro