eine Liste gegeben, b01
, von Listen: tp01
, tp02
, tp03
, wo jeder tp
speichert eine bestimmte Art von Daten, wie entpacke ich die Klasse jedes tp
?Konvertieren verschachtelte Liste zu Datenrahmen, während Spaltentypen Erhaltung
Ziel ist es, einen einzelnen Datenrahmen zurückzugeben, der den ursprünglichen Variablentyp erhält (z. B. int, char). Ich dachte daran, die Klassen von jedem tp
zu extrahieren und sie zu speichern und dann die Klassen des Datenrahmens mit diesen gespeicherten Klassen zu überschreiben. Im folgenden Beispiel enthält der resultierende Datenrahmen drei Variablen, die als Factor
betrachtet werden. Ich möchte, dass sie als int
, char
, int
betrachtet werden.
ich folgendes versucht ohne Glück:
str(as.data.frame(lapply(b01,unlist)))
str(sapply(as.data.frame(lapply(b01,unlist)),class))
lapply(b01,unlist)
sapply(str(lapply(b01,unlist)),unlist)
MWE:
set.seed(1)
tp01 <- list(sample(seq(0,100),10))
set.seed(2)
tp02 <- list(sample(seq(0,100),10))
tp03 <- list(letters[c(sample(seq(0,26),10))])
b01 <- list(tp01, tp02, tp03)
df <- as.data.frame(matrix(unlist(lapply(all,unlist)),
nrow=length(unlist(b01[1]))*length(all)))
> df
V1 V2 V3
1 26 q 18
2 37 j 70
3 56 t 56
4 89 c 16
5 19 g 91
6 86 y 90
7 97 w 12
8 62 v 78
9 58 r 43
10 5 b 50
11 18 26 q
12 70 37 j
13 56 56 t
14 16 89 c
15 91 19 g
16 90 86 y
17 12 97 w
18 78 62 v
19 43 58 r
20 50 5 b
str(df)
'data.frame': 20 obs. of 3 variables:
$ V1: Factor w/ 19 levels "12","16","18",..: 5 6 10 16 4 15 19 12 11 8 ...
$ V2: Factor w/ 20 levels "19","26","37",..: 15 14 17 12 13 20 19 18 16 11 ...
$ V3: Factor w/ 20 levels "12","16","18",..: 3 7 6 2 10 9 1 8 4 5 ...
@RichScriven auch nur 'data.frame (unlist (b01, recursive = FALSE))'. – nicola
@nicola - ja, das ist die eine;) –
Auch müssen Sie 'stringsAsFactors = FALSE' hinzufügen, um Zeichen anstelle von Faktor zu erhalten. – eipi10