Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 通过未导出函数方法定位包_R_Find_Package - Fatal编程技术网

R 通过未导出函数方法定位包

R 通过未导出函数方法定位包,r,find,package,R,Find,Package,经常出现的一种情况是,具有重写函数的包在依赖于某些函数定义的包中导致意外错误(例如MASS::negative.binomian和GLMMadaptive::negative.binomian具有不同的参数,这会导致某些依赖的包失败) 如果从包中导出函数冲突,则通常可以通过以下方式实现不需要关闭和打开R的修复: pck <- find("negative.binomial") if(length(pck) > 0){ suppressWarnings(sapply(unlist

经常出现的一种情况是,具有重写函数的包在依赖于某些函数定义的包中导致意外错误(例如
MASS::negative.binomian
GLMMadaptive::negative.binomian
具有不同的参数,这会导致某些依赖的包失败)

如果从包中导出函数冲突,则通常可以通过以下方式实现不需要关闭和打开
R
的修复:

pck <- find("negative.binomial")
if(length(pck) > 0){
   suppressWarnings(sapply(unlist(pck), function(x) 
                           detach(x, unload = TRUE, 
                                  force = TRUE, character.only = TRUE))
}
if(length(find("negative.binomial")) == 0)
   cat("Succes!\n")
如果只将函数方法设为字符串,如何
查找
附带的
包,其中包含特定的非导出函数或方法

库(lme4)
library(lme4)
library(car)

fun <- "influence.merMod"
p <- loadedNamespaces()
p[vapply(p, function(p) fun %in% ls(envir = asNamespace(p)), FUN.VALUE = FALSE)]
#[1] "car"  "lme4"
图书馆(汽车) 乐趣
库(lme4)
图书馆(汽车)

fun
getAnywhere
将查找所有出现的情况,然后我们可以从它返回的结构中提取名称

unique(sub(".*[ :]", "", getAnywhere("influence.merMod")$where)  
## [1] "lme4" "car" 

getAnywhere
将查找所有出现的情况,然后我们可以从它返回的结构中提取名称

unique(sub(".*[ :]", "", getAnywhere("influence.merMod")$where)  
## [1] "lme4" "car" 

无法屏蔽未导出的函数,因为程序包需要显式导入它,并且用户在没有为程序包添加前缀的情况下无法访问它。可能是这样,我的问题仍然存在。如何定位包含未导出的函数或方法的包,只需使用类似于
find(…)
的方法。未导出的函数不能被屏蔽,因为包需要显式导入,并且用户无法在不添加包前缀的情况下访问它。可能是这样,我的问题仍然存在。只有使用类似于
find(…)
的方法,才能找到包含未导出的函数或方法的包。