Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.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中的代码?_R_Package_Libraries - Fatal编程技术网

R:如何检查我正在加载的库是否用于R中的代码?

R:如何检查我正在加载的库是否用于R中的代码?,r,package,libraries,R,Package,Libraries,我在研究中使用了几个R库包。所有库在代码开始时一起收费。这就是问题所在。事实证明,我已经用R包中已经存在的不同函数做了几个测试。然而,在最终的代码中,我并没有实现我尝试过的所有函数。因此,我正在加载我不使用的库 有没有办法检查这些库,以了解它们是否真的是我的代码所必需的?首先在没有加载库的新环境下重新启动R。对于本演示,我将定义两个函数: zoo1 <- function() na.locf(1:10) zoo2 <- function() zoo::na.locf(1:10) a

我在研究中使用了几个R库包。所有库在代码开始时一起收费。这就是问题所在。事实证明,我已经用R包中已经存在的不同函数做了几个测试。然而,在最终的代码中,我并没有实现我尝试过的所有函数。因此,我正在加载我不使用的库


有没有办法检查这些库,以了解它们是否真的是我的代码所必需的?

首先在没有加载库的新环境下重新启动R。对于本演示,我将定义两个函数:

zoo1 <- function() na.locf(1:10)
zoo2 <- function() zoo::na.locf(1:10)
allfuncs <- Filter(function(a) is.function(get(a)), ls())
str(sapply(allfuncs, function(fn) capture.output(codetools::checkUsage(get(fn))), simplify=FALSE))
# List of 2
#  $ zoo1: chr "<anonymous>: no visible global function definition for 'na.locf'"
#  $ zoo2: chr(0) 
现在让我们迭代所有函数:

zoo1 <- function() na.locf(1:10)
zoo2 <- function() zoo::na.locf(1:10)
allfuncs <- Filter(function(a) is.function(get(a)), ls())
str(sapply(allfuncs, function(fn) capture.output(codetools::checkUsage(get(fn))), simplify=FALSE))
# List of 2
#  $ zoo1: chr "<anonymous>: no visible global function definition for 'na.locf'"
#  $ zoo2: chr(0) 
这对我有好处吗

# fake-python
from zoo import *
na_locf([1,2,None,3])
(如果该包/功能存在)。然后,无污染的变体如下所示:

# R
zoo::na.locf(c(1,2,NA,3))
# fake-python
import zoo
zoo.na_locf([1,2,None,3])
其中必须明确使用函数的包(和/或subdir包)。没有含糊不清的地方。这是明确的。这被一些/许多人认为是“一件好事(tm)”

(语言爱好者可能会说
library(zoo)
和zoo import*中的
并不完全相同……描述正在发生的事情的更好方法是,它们将
zoo
中的所有内容都带到函数的搜索路径中,这可能会导致掩蔽,正如我们在前面的控制台消息中看到的那样;而
功能只加载名称空间,而不加载名称空间将其添加到搜索路径。很多事情都发生在后台。)


首先,在没有加载库的新环境中重新启动R。对于本演示,我将定义两个函数:

zoo1 <- function() na.locf(1:10)
zoo2 <- function() zoo::na.locf(1:10)
allfuncs <- Filter(function(a) is.function(get(a)), ls())
str(sapply(allfuncs, function(fn) capture.output(codetools::checkUsage(get(fn))), simplify=FALSE))
# List of 2
#  $ zoo1: chr "<anonymous>: no visible global function definition for 'na.locf'"
#  $ zoo2: chr(0) 
现在让我们迭代所有函数:

zoo1 <- function() na.locf(1:10)
zoo2 <- function() zoo::na.locf(1:10)
allfuncs <- Filter(function(a) is.function(get(a)), ls())
str(sapply(allfuncs, function(fn) capture.output(codetools::checkUsage(get(fn))), simplify=FALSE))
# List of 2
#  $ zoo1: chr "<anonymous>: no visible global function definition for 'na.locf'"
#  $ zoo2: chr(0) 
这对我有好处吗

# fake-python
from zoo import *
na_locf([1,2,None,3])
(如果该包/功能存在)。然后,无污染的变体如下所示:

# R
zoo::na.locf(c(1,2,NA,3))
# fake-python
import zoo
zoo.na_locf([1,2,None,3])
其中必须明确使用函数的包(和/或subdir包)。没有含糊不清的地方。这是明确的。这被一些/许多人认为是“一件好事(tm)”

(语言爱好者可能会说
library(zoo)
和zoo import*
中的
并不完全相同……描述正在发生的事情的更好方法是,它们将
zoo
中的所有内容都带到函数的搜索路径中,这可能会导致掩蔽,正如我们在前面的控制台消息中看到的那样;而
功能只加载名称空间,而不加载名称空间把它添加到搜索路径上。背景中有很多事情发生。)


您可以在项目中使用
packrat
来控制您使用的包并将其全部删除(通过注释掉
require
调用),然后根据需要将错误添加回以修复错误。请参阅,您可以在项目中使用
packrat
来控制您使用的包。请将它们全部删除(通过注释掉
require
调用),然后根据需要将错误添加回以修复错误。请参阅,事后诸葛亮。。。我有点惊讶和高兴,我一直在使用
codetools::checkUsage(…)
vice
library(codetools);checkUsage(…)
,如果只是为了演示名称空间管理。David,这是否回答了您的问题,还是仍然存在未解决的问题?事后看来。。。我有点惊讶和高兴,我一直在使用
codetools::checkUsage(…)
vice
library(codetools);checkUsage(…)
,如果只是为了演示名称空间管理。David,这是否回答了您的问题,还是仍然存在未解决的问题?