2013-12-13 10 views
14

यह जांचने का पसंदीदा तरीका क्या है कि आपके पास डेटा फ्रेम नाम स्ट्रिंग के रूप में है?जांचें कि डेटा फ्रेम मौजूद है

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

मैं दूसरे के लिए वोट दूंगा। लेकिन अगर आप इसे किसी फ़ंक्शन में लपेटना चाहते हैं तो या तो 'आईरिस' या 'df_name' को बदलने की आवश्यकता है, इसलिए उसी नाम का उपयोग किया जा रहा है। –

उत्तर

20

दूसरा विकल्प

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

ऑपरेटर && आलसी मूल्यांकन, यानी की अनुमति देता है के लिए छोटा किया जा सकता है, दूसरा बयान केवल मूल्यांकन किया जाता है: मैं के बारे में सोच सकते हैं यदि पहला व्यक्ति TRUE देता है।

0

एक और एक

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

यह 'ifelse() 'का अनुचित उपयोग दोनों प्रतीत होता है और उपलब्ध सिस्टम डेटासेट में" खोज "को बढ़ाने में विफल रहता है जो वैश्विक वातावरण में नहीं हो सकता है। –

0

मौजूद है ("df_name") एक सत्य (यदि डेटा फ्रेम मौजूद है) और गलत (यदि यह नहीं है) देगा। तो परवाह क्यों? पहली प्रतिक्रिया में trycatch कथन काम नहीं किया था। यह आउटपुट हर समय गलत था।

+0

शायद आपकी प्रतिक्रिया केवल यह जांचती है कि कोई ऑब्जेक्ट मौजूद है या नहीं, यह ऑब्जेक्ट डेटा फ्रेम के रूप में मौजूद है या नहीं? –

+1

इसके अलावा, 'tryCatch' कथन मेरे लिए' TRUE' लौटा दिया। –

संबंधित मुद्दे