आर

2016-09-14 13 views
7

में एकाधिक लोड किए गए पैकेजों पर grep का उपयोग करके फ़ंक्शन खोजना मान लें कि मेरे पास पैकेज base, dplyr, data.table, tidyr आदि sapply() का उपयोग करके लोड किया गया है।आर

sapply(c("dplyr","data.table","tidyr"),library,character.only=TRUE) 

तो एक विशेष पैकेज में कार्यों की सूची की जांच करने के लिए मैं

ls("package:data.table") 

करना अब अगर मैं dplyr अंदर कार्यों के लिए खोज करने के लिए is. पैटर्न के साथ शुरू करना चाहता हूँ मैं

grep("is\\.",ls("package:dplyr"),value=TRUE) 
# [1] "is.grouped_df" "is.ident"  "is.sql"  "is.src"  
# [5] "is.tbl" 

करना मेरा लक्ष्य is. या as. या एकाधिक पैकेजों में किसी अन्य पैटर्न के साथ शुरू होने वाले सभी कार्यों की खोज करना है। मुझे लगता है कि कोड लंबा होगा iee नीचे मैंने dplyr और base कार्यों की संयुक्त सूची बनाई है और फिर grep पैटर्न जोड़ा है। कई लोड किए गए पैकेजों के लिए इसे कैसे करें?

grep("is\\.",c(ls("package:dplyr"),ls("package:base")),value=T) 

समारोह search() मुझे लोड पैकेजों की सूची देना होगा। लेकिन लोड किए गए पैकेज के सभी कार्यों को कैसे इकट्ठा करना है, ताकि मैं बाद में grep कर सकूं।

एक भी पैकेज के लिए, कार्यों की सूची से

ls("package:package_name") 

किसी भी मदद प्राप्त किया जा सकता अत्यधिक सराहना की है।

उत्तर

6

, सभी संकुल जो लोड किए गए हैं की एक सूची प्राप्त करने के लिए उपयोग करें:

x <- grep('package:',search(),value=TRUE) # Comment below by danielson 
# e.g. ("package:base", "package:data.table") 

sapply(x, function(x) { 
    paste0(x, ":", grep("is\\.", ls(x),value=TRUE)) 
}) 

आउटपुट:

$`package:base` 
[1] "package:base:is.array"    "package:base:is.atomic" 
[3] "package:base:is.call"    "package:base:is.character" 
[5] "package:base:is.complex"   "package:base:is.data.frame" 
[7] "package:base:is.double"    "package:base:is.element" 
... 

$`package:data.table` 
[1] "package:data.table:is.data.table" 
+0

मुझे जवाब पसंद है। लेकिन, मान लें कि 'लाइब्रेरी' का उपयोग करके 100 पैकेज लोड किए गए हैं। अब लोड की गई संकुल सूची देखने के लिए, मैं कंसोल पर 'खोज()' कहता हूं। मैं बैठ नहीं सकता हूं और उनमें से 100 को 'सी()' के अंदर लिख सकता हूं, इसलिए मुझे एक उत्तर की आवश्यकता होगी जहां एक्स बड़ा हो और बहुत आसानी से मिल जाए। –

+0

@ SowmyaS.Manian मैं मानता हूं कि आपको स्थापित संकुलों की सूची प्राप्त करने के लिए एक तरीका चाहिए। इसके लिए, 'install.packages() [, 1]' का उपयोग करें। परिणामों के संयोजन के संबंध में, मुझे लगता है कि मैंने जो आउटपुट दिया है वह उचित है।आम तौर पर, आपको हमेशा किसी फ़ंक्शन या विधि को चुनने के लिए कुछ दस्तावेज़ों के माध्यम से पढ़ना होता है, और आपका उपयोग केस कोई अलग AFAIK नहीं है। –

+0

हम 'x <- search() [- 1]' और फिर 'sapply()' के अंदर मामूली परिवर्तन भी कर सकते हैं। लगभग मेरी समस्या हल हो गई। –

0

सभी को धन्यवाद। तो यहां सभी प्रश्नों के साथ पोस्ट किए गए प्रश्नों के उत्तर यहां दिए गए हैं

नोट: प्राथमिकता एकाधिक लोड किए गए पैकेजों पर एक पैटर्न की खोज करना था, आप "है।" के बजाय कुछ अन्य पैटर्न खोज सकते हैं।

संस्करण 1

## Get list of loaded packages into X 

X <- grep('package:',search(),value=TRUE) # Comment by danielson 

# Use grep to find functions with is. pattern over multiple loaded packages inside X 

sapply(X, function(X) { 
paste0(X, ":", grep("is\\.", ls(X),value=TRUE)) 
}) 

संस्करण 2

## Get list of loaded packages into X 

X <- .packages() # Comment by docendo discimus 

# Use grep to find functions with is. pattern over multiple loaded packages inside X 

sapply(X, function(X) { 
paste0(X, ":", grep("is\\.", ls(paste0("package:",X)),value=TRUE)) 
}) 

संस्करण 3 - ग्रेप बिना() फ़ंक्शन

## Get list of loaded packages into X 

X <- .packages() 

# find functions using `ls()` with is. pattern over multiple loaded packages inside X 
# Suggested by Rich Scriven Over Comments 

sapply(X, function(X) { 
paste0(X,":",ls(paste0("package:",X), pattern = "is\\.")) 
})