在R中使用grep在多个加载的包中搜索函数 [英] Searching functions using grep over multiple loaded packages in R
问题描述
可以说我有package base
, dplyr
, data.table
, tidyr
等。 sapply()
。
sapply(c(dplyr,data.table,tidyr),library,character.only = TRUE)
$ c $因此,要检查特定包中的函数列表,我要做的是:
$ p p $ p
$ b pre $ > ls(package:data.table)
现在如果我想在> dplyr
内搜索函数,以开头。
模式I do
grep(is\\\。,ls(package:dplyr),value = TRUE)
#[1]is.grouped_df is.identis.sqlis.src
#[5]is.tbl
我的目标是搜索以开头的所有函数。
或 as。
或同时在多个包中的任何其他模式。代码我认为会很长,即低于我有 dplyr
和 base
函数的列表,然后添加grep模式。
$ b
grep(is \\\。,c(ls(package :dplyr),ls(package:base)),value = T)
$ b 函数 search()
会给我加载的包列表。但是如何收集加载的包的所有功能,以便稍后 grep
就可以了。
单个包,函数列表可以通过
ls(package:package_name)
任何帮助都会得到高度评价。
<
x < - grep('package:', search(),value = TRUE)#以下由danielson
#评论(package:base,package:data.table)
sapply(x,function(x){
paste0(x,:,grep(is \ \。,ls(x),value = TRUE))
})
输出:
$`package:base`
[1]package:base :is.arraypackage:base:is.atomic
[3]package:base:is.callpackage:base:is.character
[5]package:base :is.complexpackage:base:is.data.frame
[7]package:base:is.doublepackage:base:is.element
...
$`package:data.table`
[1]package:data.table:is.data.table
Lets say I have package base
, dplyr
, data.table
, tidyr
etc. loaded using sapply()
.
sapply(c("dplyr","data.table","tidyr"),library,character.only=TRUE)
So to check the list of functions in a particular package I do
ls("package:data.table")
Now if I want to search for functions inside dplyr
starting with is.
pattern I do
grep("is\\.",ls("package:dplyr"),value=TRUE)
# [1] "is.grouped_df" "is.ident" "is.sql" "is.src"
# [5] "is.tbl"
My Goal is to search for all the functions starting with is.
or as.
or any other pattern in multiple packages simultaneously. The code I think would be lengthy i.e. below I have combined list of dplyr
and base
functions and then added grep pattern. How to do it for many loaded packages?
grep("is\\.",c(ls("package:dplyr"),ls("package:base")),value=T)
Function search()
would give me list of loaded packages. But how to gather all the functions of loaded packages, so that I can later grep
on it.
For a single package, list of functions can be obtained by
ls("package:package_name")
Any help is highly appreciated.
To get a list of all packages which are loaded, use:
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))
})
Output:
$`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"
这篇关于在R中使用grep在多个加载的包中搜索函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!