2010-08-04 20 views
5

देता है मैं एक ऐसा फ़ंक्शन बनाना चाहता हूं जो डेटासेट नाम और पैकेज नाम लेता है और डेटासेट को डेटा.फ्रेम के रूप में देता है। यहां मेरी कोशिश हैएक फ़ंक्शन जो डेटासेट

loadDataSet <- function(name, pkg) { 
     varname <- data(name, package=pkg) 
     return(get(varname[[1]])) 
    } 
loadDataSet("acme", "boot") 

हालांकि, यह फ़ंक्शन विफल हो जाता है। समस्या यह प्रतीत होती है कि डेटा() को कॉल नाम चर के मान को नहीं देखता है, बल्कि "नाम"।

मुझे पहले से पता है कि एक चर से अपने नाम पर कैसे जाना है, अलग-अलग (विकल्प (var)) के माध्यम से। लेकिन मैं "var" से var तक, दूसरी तरफ कैसे जा सकता हूं?

किसी भी संकेत की सराहना की!

उत्तर

5

दें कि यह एक कोशिश

loadDataSet <- function(name, pkg) { 
     do.call("data", list(name,package=pkg)) 
     return(get(name)) 
    } 

loadDataSet("acme", "boot") 
+0

आप कंसोल को मुद्रित डेटा सेट नहीं करना चाहते हैं, तो इसके बजाय 'return' की invisible' का उपयोग'। –

+0

ठीक है, यह निश्चित रूप से मदद की। धन्यवाद! अब मुझे टेबल() के साथ एक ही समस्या है। मान लें कि मैंने जीवित रहने से सीजीडी संलग्न की है और अब टेबल (सेक्स, ट्रीट) चाहते हैं, लेकिन फिर से केवल "सेक्स" और "ट्रीट" स्ट्रिंग है। मैं उसे कैसे कर सकता हूँ? do.call ("तालिका", सूची ("लिंग", "इलाज") विफल ... –

+0

इसे आज़माएं: वापसी करें (do.call ("तालिका", सूची (eval (parse (text = var1)), eval (पार्स (पाठ = var2))))) –

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