2017-01-05 2 views
0

Ich habe mehrere Datenrahmen und ich würde gerne die head Funktion über alle von ihnen ausführen. Ich habe Folgendes versucht, aber es funktioniert nicht, da es den Namen des Datenrahmens, aber nicht den Kopf des Datenrahmens selbst zurückgibt.Loop show Kopf von mehreren Datenrahmen

df.a <- data.frame(col1 = "a", col2 = 1) 
df.b <- data.frame(col1 = "b", col2 = 2) 
df.c <- data.frame(col1 = "c", col2 = 3) 

list <- ls() 

for (i in 1:length(list())){ 
    head(list[i]) 
} 

lapply(ls(),head) 

Irgendeine Idee, wie man es macht oder warum es nicht funktioniert?

+2

Sie müssen 'lapply (mget (ls (pattern = "df \\")), head) ' – akrun

Antwort

2

Setzen Sie Ihre Datenrahmen in eine Liste und fügen Sie Ihrer Schleife einen Ausdruck hinzu.

my.list <- list(df.a, df.b, df.c) 

for (i in seq_along(my.list)){ 
    print(head(my.list[[i]])) 
} 
2

Wir müssen den Wert der Objekte durch die ls() als vector von character Strings bereitgestellt bekommen. Wenn die Objektnamen ein pattern haben, geben Sie die pattern im ls und wickeln Sie es mit mget, um die Werte in einem list zu bekommen, Schleife über die list mit lapply und erhalten die head

lapply(mget(ls(pattern="df\\.")), head) 
+0

Danke @akrun, ich sehe, dass' mget' die Version von get ist, die mehrere Variablen gleichzeitig abruft. Warum verwenden Sie jedoch 'pattern =" df \\. "'? Woher kommt "df \\"? – user3507584

+0

@ user3507584 Das '\\.' Dient dazu, die '.' in' df.a', 'df.b' usw. zu umgehen, da' .' ein Metazeichen ist, das ein beliebiges Zeichen bedeutet – akrun

Verwandte Themen