问题标签 [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 回答
1059 浏览

r - 如何维护 R (renv) 项目

我和我的同事正在用 RStudio 中的 Bookdown 编写一本书。由于我使用 ggplot 创建了很多图形,因此我对其他包(ggplot、ggforce、gganimate...)有很多依赖关系,因此我在本书的过程中添加了 renv 来处理包管理。在全新安装我的 Windows 之后,我现在确实无法再次设置项目,因为从 R 到版本 3.6.3 的更新和使用的软件包。

带有 renv 的项目的初始状态是版本为 3.6.2 的 R,我重新安装了它。打开项目后,我运行renv::restore()以使用所有包恢复环境。目前只有包 nloptr(版本 1.2.1)有错误,因为它必须从源代码构建包。

要解决此错误,我通过以下方式手动安装软件包:

之后可以安装所有软件包,但现在,其中许多都显示警告package 'X' was built under R version 3.6.3

如果renv无法恢复原始状态,那么它有什么意义,因为所有包都已被 R 的更新更改?如何正确管理 R 项目?

0 投票
1 回答
33 浏览

r - 如何在给定 Windows 255 文件路径限制的情况下管理 R 包,例如检查点和 Rcpp?

所以我试图使用检查点包(日期为 2020 年 3 月 1 日)安装 Rcpp。

我的大多数包都很好,但是 Rcpp 专门创建了很多临时目录,然后将其删除,例如:

这是 84 个字符长,我相信有些更长。

Checkpoint 也创建了许多目录,例如这里有一个自定义库:

这是 67 个字符,其中 52 个仅在管理多个检查点日期或版本时需要。

这意味着对于文件路径,例如:

假设即使是临时文件也不能超过 255 个字符,那么我肯定有 < 60 个字符可用于所有 Rcpp 临时对象。

我使用以下代码进行了测试:

它失败是因为许多“找不到文件或目录”,我认为实际上失败了,因为无法创建 00LOCK-Rcpp/00new/Rcpp/include/Rcpp/ 然后将所有 .h 文件解压缩到它。我很好奇,所以我运行了以下内容:

它安装得很好。

关于如何制作检查点的任何想法要么不创建这么多嵌套目录,要么在整个软件包安装之前忽略 file_path 255 限制?

现在,我可能会将目录向上移动几级,但如果我能深入了解我的猜测是否真的正确,或者我是否遗漏了什么,我将不胜感激!

0 投票
1 回答
955 浏览

r - 使用 renv::restore() 安装包时出错

我在使用问题。对于一个更大的项目,我们希望使用来拥有相同版本的和我们所有的包。然而,一旦有更新版本的包可用并且我们运行renv::restore()我们就会收到类似以下的错误(请注意:不是唯一的包。它也发生在 graybox、mime、stringi 等等)。

我现在有两个问题:

  1. 我该如何解决这个错误?
  2. ,我们如何在整个团队中使用相同版本的包如果每次有新版本可用

谢谢你。莉齐

0 投票
2 回答
510 浏览

r - 使用 renv 时,Rscript 无法识别库

我正在使用 R 的 v3.6.3 和 renv 开发 Mac OSX。在 Rstudio 和 R 中,我可以加载已安装包的库,例如library(ggplot2)作品。但是,当我使用 Rscript 运行脚本时,我收到了消息

根据this SO answer,我需要确保

与的值相同

但值是一样的,都指向renv-system-library我的项目文件夹中的。

那么我该如何解决呢?

0 投票
1 回答
100 浏览

r - Rmarkdown 和 Renv 的重现性问题

我最近注意到,相同的 R markdown 文档在不同条件下(例如不同的项目)运行时会生成不同的图。作为一个玩具示例,请考虑以下文档:

它应该产生一个类似以下的情节,有时我会成功并得到它:

在此处输入图像描述

然而,其他时候,我得到这个替代版本,这是无稽之谈:

在此处输入图像描述

我注意到加载 tidyverse 包后,有些版本是不同的。例如,第一个 ggplot 是 3.2.1,而后一个是 3.3.0。这稍后具有不同的版本号,因为它在使用 Renv 的 R 项目中单独维护。

好的,可能是不同的版本号?即使考虑到我很久以前就知道这个包的这些不同版本,我也很难理解在任何ggplot 版本中给定这个代码是如何生成第二个图的。如果不是版本号,是否有任何可能导致此问题的提示?

0 投票
2 回答
909 浏览

r - How to completely remove renv from an R statistics program

I have been using renv on a R project, but now want to remove it from renv versioning, i.e. delete all renv associated files, but still have access to the libraries that I used installed under renv. How do I do this? Alternatively, how do I migrate from renv to packrat?

0 投票
1 回答
280 浏览

r-markdown - 如何从项目的 renv 库中的 Rmd 文件中停止 rmarkdown::render()?

我有一个使用默认blogdown::build_site()路由编译的 Hugo 博客。

我决定renv::试一试,因为我的一些帖子既情节重又容易依赖旧的软件包版本,所以为什么不确保将来完整的站点重建不会造成问题,对吧?考虑到这一点,我决定最好的使用方法renv是让每篇博文(在 中/content/post/)成为自己的renv项目。由于 使用的全局库缓存renv,这甚至不会造成太多的存储损失。

现在博客将无法编译,因为rmarkdown::render()build_site()每篇博客文章都会调用它)似乎遍历每篇博客文章的整个树以查找 Rmd 文件,当然在renv库文件夹中发现了一些文件,并愉快地尝试编译它们——并且可以预见地失败。

所以我的问题是

  • 将每篇博客文章置于自己的renv环境中是否违反了惯例(我才刚刚开始学习 renv 和朋友们)?
  • 如果不是,为什么build_site()不玩renv好呢?我错过了什么吗?还是我发现了一个真正的问题?还是我应该放手并切换到手动 blogdown 站点构建方法

这个问题似乎微不足道(我们只需要停止render()遍历/renv/目录),但据我所知,blogdown 和 renv 之间的这种相互作用似乎尚未探索(我只发现了一些切线相关的 问题,所以我想我可以寻找建议先在这里。

我的网站是使用Rscript -e "blogdown::build_site(local=FALSE)"(不使用 RStudio 中的按钮)构建的。一旦这个脚本开始在renv库树中渲染 Rmd 文件,它最终会失败:

这是我的会话信息:

0 投票
0 回答
43 浏览

r - 在 github 存储库的 R 项目中,Anaconda R 环境无法访问库/包

我在 Anaconda 中有一个 R 环境,其中包含我需要和使用的所有包。我使用 conda CLI 从 github 添加了一个私有存储库到我的电脑上。项目文件包括一个 renv 文件夹以及一个 .Rproj 文件。当我尝试打开项目中的任何 R 脚本而不打开 Rproj 文件来打开项目时,它们都显示为空白,当我尝试打开 csv 文件时,它说它不存在。当我打开 Rproject 时,我无法访问我通常可以在 R 中访问的任何库或包。当我尝试在此环境中安装包时,出现错误:

怎么了?我只想访问存储库的脚本并加载我常用环境的包。任何帮助表示赞赏!

0 投票
0 回答
342 浏览

r - renv::restore() 非常慢

我是renv第一次尝试这个包。

我拿了一个我用 packrat 管理的现有项目,删除了 .Rprofile 和 packrat 目录(我很高兴从头开始)

我使用选项添加了一个本地工作存储库,然后运行 ​​renv::init()。这发现了一个完整的依赖项列表(138 个 CRAN 包、10 个工作包和一个 github 安装包)

然后我将该文件夹复制到另一台计算机,将 RENV_PATHS_SOURCE 更改为该系统上全局可用的内容,然后转到项目目录,启动 R,它告诉我它不同步并要求我运行状态。我做了,看起来不错,报告了一堆需要安装的库。然后我跑了 renv::restore()

然后它正确列出了所有依赖项,然后继续安装它们。

这真的很慢。

我坐在这里等待,看到新的 tarball 被列出来,而且最多需要一整分钟来获取每个 tarball。但更典型的情况是每个时间在 1-2 分钟范围内。

这很奇怪,因为它们被列为在 0.2-0.7 秒内下载。嗅探网络接口证实了这一点。短时间内会有大量的包进来,每个新的 tarball 都列出来,看起来它们可以与报告的花费时间相匹配。

在所有这些过程中,R cpu 使用率在 0.0% 和 1.0% 之间波动。

那么 renv 在做什么呢?

所以对于一个不是特别复杂的项目,它包含 180 个包,我会等待 3 个小时来获取 tarball?那他们自己应该只需要0.5秒吗?这将成为一个问题。就我个人而言,我坚持从 Packrat 迁移,直到这个问题得到解决或理解。

但是 renv 在做什么或在等待什么?据我所知,没有网络活动,没有 cpu 使用,没有 iowait(查看顶部输出)。

0 投票
1 回答
479 浏览

r - renv 和 git 交互 R

我试图更好地理解renvR 中的包是如何工作的,以及它是如何与 git 交互的。这是我的问题

  1. 假设我的 R 项目中有 master 和几个 git 分支,每个(master 和分支)我想使用不同的环境(不同的库或相同库的不同版本)。renv将能够处理它,即如果我从一个分支切换到另一个分支将需要调用renv::restore().

  2. 我有两个单独的项目,renv它们都在运行,分别称为项目 A 和项目 B。我想从项目 B 中获取环境并替换项目 A 中的环境。我该如何完成它?我只需要将renv文件夹从一个项目复制到另一个项目吗?