2013-12-13 69 views
14

Veri çerçeve adının dizgeli olması nedeniyle veri çerçevesinin varlığını kontrol etmenin tercih edilen yolu nedir?Veri çerçevesinin mevcut olup olmadığını kontrol edin

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

İkincisine oy veririm. ama eğer bir fonksiyonda sarmak isterseniz, ya 'iris' ya da 'df_name' değiĢtirilmeli ki aynı ad kullanýlýr. –

cevap

20

İkinci seçenek

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

&& yani tembel değerlendirme, izin verir operatör için kısaltılabilir, ikinci ifadesi yalnızca değerlendirilir: Aklıma İlki TRUE döndürürse.

0

diğeri

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

Bu, hem ifelse() 'nin uygun olmayan bir kullanımı gibi görünüyor ve" arama "ı, global ortamda bulunmayan mevcut sistem veri kümelerine genişletmekte başarısız oluyor. –

0

var ("df_name") bir TRUE (veri çerçevesi varsa) ve FALSE (eğer değilse) verir. Ne gereği var? İlk yanıttaki trycatch ifadesi işe yaramadı. Bu çıktı her zaman FALSE oldu.

+0

Belki de cevabınız, yalnızca bir nesnenin bir veri çerçevesi olarak var olup olmadığını değil, bir nesnenin var olup olmadığını kontrol eder? –

+1

Ayrıca, 'tryCatch' ifadesi' TRUE' için bana geri döndü. –

İlgili konular