假设我使用sapply()加载了包base,dplyr,data.table,tidyr等.
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开头的所有函数.或者作为.或同时在多个包中的任何其他模式.我认为代码很长,即低于我已经结合了dplyr和基本函数的列表,然后添加了grep模式.如何为许多加载的包做到这一点?
grep("is\\.",c(ls("package:dplyr"),ls("package:base")),value=T)
函数search()会给我加载包的列表.但是如何收集加载包的所有功能,以便我以后可以grep它.
对于单个包,可以通过获得功能列表
ls("package:package_name")
任何帮助都非常感谢.
解决方法
要获取所有已加载的包的列表,请使用:
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"