相关疑难解决方法(0)

如何处理导入包的依赖关系(`Depends:`)(`Imports:`)

我正在尝试使用Imports:而不是Depends:DESCRIPTION我的软件包的文件中,但我仍然觉得我还有更多要了解的内容;-)

我从这篇文章中学到的东西(顺便说一下:真棒!!!)就是说我的包装,比如通过环境中的生命而不是附加到搜索路径来mypkg导入(说imported.pkg).当试图找到那些船时,R在遍历搜索列表之前查看.到现在为止还挺好.Imports:imports:mypkgfooimported.pkgimports:mypkg

实际问题

如果imported.pkg(导入mypkg)取决于某个其他包(在Depends:包的DESCRIPTION文件部分中说明),我是否需要使这个包非常Depends:依赖我的包,以便R找到该包的功能?所以在我看来,其他R抱怨.

证据

似乎只是导入这样的包是不够的.例如,拿包roxygen2(CRAN).这取决于digest导入一堆其他包时.我(连同其导入digestmypkg也需要它),并检查环境imports:mypkg这确实列出了digest函数:"digest" %in% parent.env(asNamespace("mypkg"))返回TRUE

然而,当roxygenize()从作为其中一部分的函数内部运行时mypkg,R抱怨它无法找到digest.

import dependencies r package

5
推荐指数
1
解决办法
1125
查看次数

为什么XTS函数在不附加Zoo的情况下找不到as.yearmon函数?

如果您有一个新的R会话(除了来自基础的软件包,没有附加任何软件包),并尝试创建按yearmon类排序的以下xts对象...

df <- data.frame(date = zoo::as.yearmon(seq.Date(as.Date("2015-01-01"),
                                                 as.Date("2015-12-31"),
                                                 by = "month")),
                 num = rnorm(12, 0, 1))

dates <- df[,1]

xts::xts(as.matrix(df[, -1]), order.by = dates)
Run Code Online (Sandbox Code Playgroud)

您得到以下错误。

在此处输入图片说明

我以为我了解R名称空间框架,但是在这种情况下我完全迷失了。当dates对象已经是yearmon对象时,为什么xts尝试调用as.yearmon函数?我知道xts取决于动物园,但这是原因吗?

如果连接了动物园,那么错误当然会消失。

我对此问题感兴趣的原因是,我正在创建一个使用xts包的包。我的函数之一返回一个xts对象,但是我希望我的包仅依赖R并导入所有其他包-据哈德利·威克姆(Hadley Wickham)所述,这是最佳实践(据我所知)。但是,由于这个问题,我需要依赖Zoo软件包才能完成这项工作。

我确定我会忽略某些事情,所以我希望SO的一个友好的人能够帮助解释这个问题并提出解决方案。谢谢!

r zoo xts

5
推荐指数
1
解决办法
1519
查看次数

requireNamespace 未加载所需的函数

我用来neuralnet训练神经网络。该包,更具体地说是 的绘图功能neuralnet,依赖于grid,它是去年以来的基础包。但是,除非我grid手动加载,否则绘图会失败:

AND <- c(rep(0,7),1)
OR <- c(0,rep(1,7))
binary.data <- data.frame(expand.grid(c(0,1), c(0,1), c(0,1)), AND, OR)
net <- neuralnet::neuralnet(AND + OR ~ Var1 + Var2 + Var3, binary.data, 
                       hidden = 0, linear.output=FALSE)

if(requireNamespace("grid")) {
  neuralnet::plot.nn(net)
}

> Error in plot.nn(net, rep = i, x.entry, x.out, radius, arrow.length, intercept,  : 
> could not find function "grid.newpage"
Run Code Online (Sandbox Code Playgroud)

使用library(grid)帮助,但我想避免这种情况,因为我想稍后在我自己的包中使用它。R 包建议使用requireNamespace,但这也没有帮助,正如我们在上面看到的。

grid::在对函数的所有调用前面添加grid并从源代码构建包解决了这个问题,但我想知道:这是预期的行为吗?查看 的来源neuralnet,我发现没有提及requireNamespacelibrary …

r r-package

5
推荐指数
1
解决办法
1043
查看次数

坚持使用S3方法定义autoplot

我坚持定义S3方法autoplot.

我有以下(完整代码在这里):

#' Autoplot for bigobenchmark object
#'
#' @importFrom ggplot2 autoplot
#'
#' @param object
#'
#' @return A ggplot2 plot
#' @export
#'
#' @examples
#' # Create plot for benchmarks
#' library(ggplot2)
#' bench <- bigobenchmark(1:n, for(i in 1:n) for(i in 1:n) 1:n, args=seq(from=1, to=100, length.out = 50))
#' autoplot(bench)
autoplot.bigobenchmark <- function(object) {
  plt <- ggplot2::ggplot(data = object$benchmarks, ggplot2::aes(x=arg, y=mean, colour=expr))
  plt <- plt + ggplot2::geom_line()
  plt <- plt + ggplot2::geom_pointrange(aes(ymin=min, ymax=max)) …
Run Code Online (Sandbox Code Playgroud)

r r-s3 roxygen2 r-package

5
推荐指数
1
解决办法
191
查看次数

在哪里导入依赖项 - R包开发

我一直在网上搜索,但找不到快速的答案.我在哪里放置我的包需要的库,以便在加载我的包时也加载它们?

据我了解,文件中的imports参数DESCRIPTION只会在系统当前不存在的情况下安装这些软件包.但是library(ggplot2)在一个包中写入的解决方案是什么,或者我应该为每个脚本分别编写它?

当我在一个新的R会话中写入devtools::load_all()并加载我的包时,我的包依次加载的库都没有被加载.

r

0
推荐指数
1
解决办法
190
查看次数

关于 R 包发布和代码可见性的问题

当我在 RI 中使用一个包时,安装它并在加载它时使用它。现在如果我添加一个使用另一个包的包怎么办?这个包也是自动下载和加载的吗?还是一般禁止 R 包使用另一个包?我不这么认为。

假设我想发布一个 R 包。在我的代码中,我可以使用其他包中的函数并安装和加载这些包吗?或者当我需要来自其他包的函数时这是如何工作的?我是否必须实现一条消息,表明需要这个和那个包,并且用户必须在它之前安装和加载它,并且我需要实现错误捕获功能,以防在 PC 系统上找不到包?

当我想发布一个 R 包时,我可以在我的包/代码中使用/调用 Java 代码吗?

对于已经发布的包——所以让我们以 fGarch 包为例——我想看看完整的代码。我怎么能看到这个?我知道 R 是开源的,我认为或多或少可能只输入一个空函数并显示代码,但有时这不起作用,尤其是我的问题是:有没有办法可以查看整个包的代码?

对于已经发布的包,是否可以查看和查看所有提交的文件?因此,就像提交所有文件的 git 存储库一样 - 代码本身以及需要的其他文件(如描述文件或其他文件) - 我可以看到这些文件并查看它们吗?

此外,关于此处的这篇文章和隐藏功能:在 R 包中是否有我无法作为最终用户看到的代码?这也是指我之前的问题,我如何或通过哪种方式可以看到 R 包中的整个代码?

r package cran

0
推荐指数
1
解决办法
129
查看次数

标签 统计

r ×6

package ×2

r-package ×2

cran ×1

dependencies ×1

import ×1

r-s3 ×1

roxygen2 ×1

xts ×1

zoo ×1