问题标签 [renv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
80 浏览

r - renv::restore() 未能检索到较旧的软件包版本

我正在使用renv一个需要使用旧版本mongolite(1.0 版)的项目。我可以使用remotes::install_version("mongolite", "1.0"). 但是,renv无法在renv::restore(). 我试图将显式源插入到lock-file 中,如下所示:

(我也试过https://github.com/jeroen/mongolite/archive/refs/tags/v1.0.tar.gz)。它只是没有工作(Error: failed to retrieve package 'mongolite' )。我也尝试Sys.setenv(RENV_DOWNLOAD_FILE_METHOD = getOption("download.file.method"))按照常见问题解答中的建议进行设置,但这也无济于事。

还有什么我可以尝试的吗?

0 投票
0 回答
40 浏览

r - 使用特定包构建 R 容器

为了应用 MLOps“左移”方法,我为每个项目从虚拟环境切换到容器。问题是,我想记录我使用的 R 包的版本,以便当我从 a 构建容器时,Dockerfile我有一个包含所有正确包的容器。

我目前的方法是使用renv锁定文件并调用renv::restore(). Dockerfile这种方法有效,但是每当我对环境进行快照时,renv都会创建所有其他钩子,例如renv文件夹,而这些钩子.Rprofile在我的容器中是无用的,因为我拥有的唯一环境是容器之一。

有没有聪明的方法呢?

0 投票
1 回答
180 浏览

r - 离线环境下使用 renv 部署项目

renv将软件包部署到离线机器的正确程序是什么?

我们有一个类似 CRAN 的内部存储库,通过options(repos = list(cran = "http://our.repo.url"))在开发机器和部署机器上进行配置。它在 中指定renv.lock。包renv本身安装在两台机器上,并且都是相同的版本(1.14)。

部署后,在项目目录下启动R后,挂了一会儿,返回错误:

我如何告诉renv要么从系统库复制自己,要么从内部存储库安装?

从系统库中复制当然是首选的做法,以节省编译时间。

0 投票
0 回答
33 浏览

r - 如何在新环境中安装 renv.lock 文件

我写了一个闪亮的应用程序,用来renv保存工作环境和软件包版本。现在我想在 Digital Ocean 上部署该应用程序,但我找不到使用此环境的方法。

当我只是将 App 文件夹复制到/srv/shiny-server/并尝试renv::restore()它不起作用时。该应用程序仍会在日志中显示软件包丢失。有没有一种简单的方法来代替手动重新安装所有软件包?

0 投票
1 回答
80 浏览

r - 编译 R 后 R 和 RMarkdown 中缺少字体

我按照https://support.rstudio.com/hc/en-us/articles/215488098-Installing-multiple-versions-of-R上的说明在计算机上从源代码安装了旧版本的 R (4.0.2) -on-Linux和我在 RStudio 中使用rmarkdown和打包以进行分析。knitr我还使用renvpackage 以获得更可重复的环境和代码。

我的问题是我的内联图缺少字体。这是一个例子:

我有一个有 2 列的表格,PT 和 M,我的代码是一个简单的 ggplot:

在此处输入图像描述

我真的不知道问题出在哪里:Linux 中缺少软件包,R、RStudio 或rmarkdown?

有人有想法吗?

解决方案

我在我的 ubuntu 上安装了Helvetica.ttf.gz :

0 投票
1 回答
143 浏览

r - R:R 笔记本范围 (Rmd) 工作流程中的 renv

我正在寻找一种方法,使我的以 R 笔记本为中心的工作流程更具可重复性,并且随后更容易使用 Docker 进行容器化。对于我的中型数据分析项目,我使用一个非常简单的结构:一个与 .Rproj 关联的文件夹和一个 index.html(这是 Github Pages 的登录页面),其中包含其他文件夹,其中包含笔记本、数据、脚本等。这种简单的“1 GitHub repo = 1 Rproj”结构也适用于 Github Pages 呈现的我的 nb.html 文件。

我希望保留这个使用 R 笔记本作为文学编程工具和控制文档的工作流程(请参阅RMarkdown Driven Development),因为它似乎非常适合中等可重现的分析项目。不幸的是,缺乏关于使用 Rmd 的工作流的文档renv,尽管它似乎与它很好地集成。

首先,谢一辉在这里暗示,与使用 renv 对单个 Rmd 文档相关的方法包括:renv::activate()renv::use()renv::embed(). renv::activate()只做部分工作renv::init():加载项目并获取init.R. 据我了解,如果项目已经初始化,它会执行此操作,但它的行为就像renv::init()项目未初始化:发现依赖项,将它们复制到 renv 全局包缓存,写入多个文件(.Rprofile、renv/activate.R、renv/ .gitignore,.Rbuildignore)。renv::use()在独立的 R 脚本中运行良好,其中脚本的依赖项直接在该脚本中指定,我们需要在运行相关脚本时自动安装和加载这些包。renv::embed()只是将 的紧凑表示嵌入renv.lock到笔记本的代码块中 - 它通过添加具有依赖关系的代码块并删除对 .Rmd 的调用来更改渲染/保存时的 .Rmd renv::embed()。据我了解,对于可重现的独立笔记本来说,使用renv::embed()and可能就足够了。renv::use()不过,我不介意将锁定文件放在目录中或保留 renv 库,只要它们都在同一个目录中。

其次,与RStudio 包管理器renv一起使用,为后续的 Binder 或 Docker 需求做准备。Grant McDermott在这里提供了一些有用的代码(我认为可能在 .Rprofile 或 .Rmd 本身中)并提供了它的基本原理:

锁定文件是针对 RSPM 作为默认包存储库(即从哪里下载包)的引用,而不是通常的 CRAN 镜像之一。除其他外,这使得跨不同包版本的时间旅行和在 Linux 上快速安装预编译的 R 包二进制文件成为可能。

第三,我想使用here包来处理相对路径。这似乎是让笔记本在传输时或在 Docker 容器内运行时运行的方法。不幸here::here()的是,查找 .Rproj 并将在我的上层文件夹(即notebooks_project)中找到它。.here可以放置的文件会here::set_here()覆盖此行为,使其here::here()按预期指向笔记本文件夹(即notebook1)。不幸的是,该.here文件仅在重新启动 R 会话或运行时生效unloadNamespace("here")在此处记录)。

到目前为止,这是我尝试过的:

我希望我的 nobooks 能够在本地(已安装、缓存依赖项和初始化项目的位置)以及转移到其他系统时无需更改代码即可运行。每个笔记本都应该有自己的 renv 设置。

我有很多问题:

  1. 我的 renv 序列有什么问题?每次运行(初始化和之后)都调用是renv::activate()要走的路吗?我应该使用renv::use()而不是renv::install()andrenv::hydrate()吗?renv::embed()即使每个笔记本文件夹都应该有其renv.lock和库,对于可重现的工作流程是否更好?renv激活时还会创建一个 .Rproj 文件(例如notebook1.Rproj),从而破坏了我的简单 1 repo = 1 Rproj - 这应该与我有关吗?
  2. renv-RSPM 工作流程看起来很棒,但是将该脚本存储在 .Rprofile 中而不是将其存储在 Rmd 本身中是否有任何优势?
  3. 有没有更好的使用方法here?这unloadNamespace("here")似乎很老套,但似乎是保留.here文件使用的唯一方法。
0 投票
1 回答
33 浏览

r - `renv` 是否有可能被“绕过”或暂时关闭?

我有一个 RStudio 项目,它使用 来管理包renv,效果很好。

但有时我想在我不想添加到项目中的主要环境(正确的词?)上使用库来调试或探索某些东西。例如,也许我想运行一些长时间的调试功能并beepr::beep()在最后调用。如果不将beepr软件包安装到项目中,这可能吗?

0 投票
1 回答
138 浏览

r - 错误:“rjags”的包或命名空间加载失败

我有一台运行 OS Big Sur 的 M1 Macbook Pro,只是尝试安装rjagsJAGS. 我从https://sourceforge.net/projects/mcmc-jags/下载 JAGS没有问题,然后运行install_packages("rjags"),但是当我运行时出现library(rjags)此错误:

我理解这意味着 R 无法“找到” JAGS 的安装。我正在使用renv这个项目,但即使我停用它并重新运行install_packages("rjags")library(rjags)我也会收到错误(只是使用不同的文件路径):

我是一个没有太多后端计算机专业知识的统计人员,所以我很感激帮助解决这个问题!

0 投票
1 回答
47 浏览

r - 由于 bslib,与 renv 共享闪亮的应用程序会引发错误

我想让内部共享/本地启动一个使用 {golem} 框架开发的闪亮应用更加健壮。

因此,我使用了该renv包并将闪亮的应用程序作为本地包安装到项目文件夹中。

我进行如下操作(感谢@Kat 的建议):

  1. 使用初始化 renvrenv::init(bare = TRUE)

  2. renv::install("my_local_package")

  3. renv::snapshot(type = "all")

  4. renv::isolate()

  5. 编写一个包含以下内容的启动文件:

  1. 共享文件夹。

但是,在另一台计算机(或 docker 测试环境)上启动闪亮的应用程序时,我收到以下由 package 引起的错误bslib。当我删除缓存时也会发生同样的情况:

注意:即使我将缓存设置为项目本地并在项目文件夹中共享它,也会发生此错误。

但是,现在错误消息不引用全局缓存,而是引用项目本地缓存。不幸的是,它仍然是一个绝对路径,会给其他用户带来错误。

这一切都非常奇怪,我一点也不知道为什么会发生这种情况。

我想避免删除 bslib。

0 投票
1 回答
39 浏览

r - 全局缓存与库——什么用于加载包?

有人可以澄清一下全局缓存与 renv 中的项目库有何不同吗?renv 是否首先搜索项目库,然后搜索全局缓存?