2013-12-13 30 views
14

Was ist der beste Weg, um zu überprüfen, ob ein Datenrahmen existiert, wenn Sie einen Datenrahmen als String haben? Ich kann denken:Überprüfen, ob ein Datenrahmen existiert

df_name <- 'iris' 

# Option 1 
tryCatch(is.data.frame(get(df_name)), error=function(cond) FALSE) 

# Option 2 
if (exists(df_name)) is.data.frame(get(df_name)) else FALSE 
+2

Ich würde für die zweite Stimme stimmen. Wenn Sie es jedoch in eine Funktion einfügen möchten, müssen entweder 'iris' oder 'df_name' geändert werden, damit derselbe Name verwendet wird. –

Antwort

20

Die zweite Option

exists(df_name) && is.data.frame(get(df_name)) 

verkürzt werden kann Operator && faul Auswertung ermöglicht, dh die zweite Aussage nur dann ausgewertet wird wenn der erste TRUE zurückgibt.

0

Eine andere

ifelse(any(ls() %in% "a"), is.data.frame(get("a")),FALSE) 
+1

Dies scheint eine unangemessene Verwendung von 'ifelse()' zu sein und die "Suche" kann nicht auf verfügbare Systemdatensätze erweitert werden, die sich möglicherweise nicht in der globalen Umgebung befinden. –

0

existiert ("df_name") würde einen TRUE geben (wenn der Datenrahmen existiert) und FALSE (falls nicht). Wieso sich die Mühe machen? Die trycatch-Anweisung in der ersten Antwort hat nicht funktioniert. Die Ausgabe war immer FALSCH.

+0

Vielleicht prüft Ihre Antwort nur, ob ein Objekt existiert und nicht, ob dieses Objekt als Datenrahmen existiert? –

+1

Auch die 'tryCatch'-Anweisung hat 'TRUE' für mich zurückgegeben. –

Verwandte Themen