मैं अपने वर्तमान कार्यक्षेत्र में सभी कार्यों को ढूंढना चाहता हूं और उस उद्देश्य के लिए is.function
का उपयोग करने के बारे में सोचा।वर्तमान कार्यक्षेत्र में सभी कार्यों को ढूंढना
"समस्या" है कि is.function
एक सच्चे आर वस्तु, नहीं चरित्र स्ट्रिंग नाम एक वस्तु का उम्मीद है।
यह मेरा समाधान है, लेकिन eval(substitute(...))
का उपयोग थोड़ा सा लगता है। किसी भी सीधे आगे के रास्ते के लिए कोई विचार या यह एकमात्र तरीका यह किया जा सकता है?
उदाहरण सामग्री
x <- TRUE
y <- 10
foo1 <- function() message("hello world!")
foo2 <- function() message("hello world again!")
सभी कार्य ढूँढना वस्तुओं
wscontent <- ls(all.names=TRUE)
funs <- sapply(wscontent, function(ii) {
eval(substitute(is.function(OBJ), list(OBJ=as.name(ii))))
})
> funs
foo1 foo2 funs wscontent x y
TRUE TRUE FALSE FALSE FALSE FALSE
+1 'lsf.str()' के लिए +1, उसे पहले नहीं पता था! ऐसा लगता है कि मैं वास्तव में एक ही लाइनर के साथ क्या कर रहा हूं: 'funs <- as.character (lsf.str()) '। आपका बहुत बहुत धन्यवाद! – Rappster
@ रैप्स्टर, जो आप परिणाम के साथ करना चाहते हैं, उसके आधार पर 'as.character' का उपयोग करना आवश्यक नहीं हो सकता है, क्योंकि' lsf.str' अनिवार्य रूप से फ़ंक्शन नामों का एक चरित्र वेक्टर लौटाता है। यह सिर्फ इतना है कि ऑब्जेक्ट क्लास 'ls_str' है, जिसके लिए 'प्रिंट' विधि है। – BenBarnes
ग्रेट, उस टिप्पणी के लिए धन्यवाद। – Rappster