2017-11-21 5 views
1

Ich, Dummkopf, habe eine Menge neuer data_frames in einem R-Projekt erstellt, in dem versucht wurde, ein bestimmtes Problem zu lösen, ohne ordnungsgemäße Commits zu machen. Nachdem ich alle praktischen Namen und das meiste des griechischen Alphabets durchgegangen bin, habe ich jetzt eine Umgebung voller data_frame-Objekte mit Namen wie "bob", "might.work", "fastthere". Ich möchte eine Looping-Funktion verwenden - laptill oder anders -, um einige Indikatoren zurückzugeben, die mir etwas über jedes Datenrahmenobjekt in der Umgebung erzählen. Ich kann dann bereinigen/löschen basierend auf den Renditen.Kann eine Funktion für alle in der Projektumgebung gespeicherten Objekte aufgerufen werden?

So ist es möglich, mit lapply auf alle data_frames in einer R-Projektumgebung zuzugreifen? Etwas wie das?

lapply(environment, function (x){ 
    if(is.dataframe(x)){ 
    dplyr::glimpse(x) 
} 
} 

Danke.

Antwort

3

Die eapply() Funktion über Objekte in einer Umgebung

eapply(globalenv(), function(x) if (is.data.frame(x)) dplyr::glimpse(x)) 
+0

Wow leicht Iterierten !, Das ist perfekt! Danke und zu denken, ich war nur einen Brief weg. – elliot

1

Sicher ist möglich!

lapply(ls(),function(x){ 
    o = get(x,envir = globalenv()) 
    cat("if"(is.data.frame(o),paste0(x," is a data frame!\n"),"Nope.\n")) 
}) 
  • ls() werden alle Objektnamen in der Umwelt (global als Standard) auflisten.
  • Da dies nur ein Name, müssen wir den Wert auf get aber die globale Umwelt geben (da wir in einer Funktion Umgebung an diesem Punkt sind)
  • Dann cat aus ich, ob es sich um ein Datenrahmen ist, aber Sie können Mach was du willst mit dem Objekt o.
0

Die folgende Funktion wird die Objekte zurück, die von der Klasse data.frame in der Umwelt erbt environ, die standardmäßig auf .GlobalEnv.

getDataFrames <- function(environ = .GlobalEnv){ 
    l <- ls(name = environ) 
    res <- NULL 
    for(i in seq_along(l)){ 
     r <- inherits(get(l[i], envir = environ), "data.frame") 
     if(r) res <- c(res, l[i]) 
    } 
    res 
} 

getDataFrames() 
Verwandte Themen