如何让 rpy2 在 Linux 中成功安装或访问 tidyverse?

问题描述 投票:0回答:1

我正在尝试在我的 Linux Mint 计算机上的 rpy2(版本 3.5.16)中使用 tidyverse。我认为有两种可能的方法可以完成此任务:(1) 使用已在 R 控制台和 RStudio 中运行的 tidyverse 安装,或 (2) 在 rpy2 中导入 tidyverse。我的偏好是使用第一个选项,这样我就可以为 R 和 Rpy2 中的任务应用相同的包集。

选项 1:导入预先存在的 tidyverse 包

我使用

sudo apt install r-base r-cran-tidyverse
在我的电脑中安装了 tidyverse。我相信此安装工作正常,因为以下代码不会在我的 R 控制台和 RStudio 中引发任何错误:

library(tidyverse)

但是,在 Jupyter 笔记本中运行以下 Python 代码会失败:

import rpy2
from rpy2.robjects.packages import importr
utils = importr('utils')
survey = importr('survey')
srvyr = importr('srvyr')

错误信息:

PackageNotInstalledError: The R package "tidyverse" is not installed.

有没有办法可以将 Rpy2 指向我现有的 tidyverse 安装?

选项 2:使用 rpy2 安装 tidyverse 的新副本

这个选项对我来说也失败了。我尝试运行以下 Python 脚本:

import rpy2
from rpy2.robjects.packages import importr
# import R's "base" package
base = importr('base')

# import R's "utils" package
utils = importr('utils')
utils.install_packages('tidyverse')
print("Done!")

但是,安装过程几分钟后,出现了以下错误消息:

ERROR: dependencies ‘conflicted’, ‘ragg’, ‘reprex’ are not available for package ‘tidyverse’
* removing ‘/home/myusername/miniforge3/envs/myenv/lib/R/library/tidyverse’

我以为我可以通过单独安装软件包来解决这个问题,但是当我运行

utils.install_packages('conflicted')
时,我收到以下消息:

ERROR: dependency ‘memoise’ is not available for package ‘conflicted’

我也可以尝试手动安装

memoise
,但我认为该包反过来可能依赖于另一个丢失的包。有没有更简单的方法来自动安装这些缺失的软件包?

python r installation tidyverse rpy2
1个回答
0
投票

在尝试为 Linux 编译 tidyverse 时,我不断遇到错误消息。我还尝试使用 r2u 来安装 tidyverse,但我无法运行其安装脚本(可能是由于与我预先存在的 R 安装发生冲突)。因此,我尝试单独安装每个 tidyverse 软件包。这种方法似乎有效,因为以下每一行都成功运行:

utils.install_packages('dplyr')
utils.install_packages('tidyr')
utils.install_packages('readr')
utils.install_packages('ggplot2')
utils.install_packages('tibble')
utils.install_packages('stringr')
utils.install_packages('forcats')
utils.install_packages('lubridate')

此外,我还可以毫无问题地运行以下单元:

dplyr = importr('dplyr')
tidyr = importr('tidyr')
readr = importr('readr')
ggplot2 = importr('ggplot2')
tibble = importr('tibble')
stringr = importr('stringr')
forcats = importr('forcats')
lubridate = importr('lubridate')
© www.soinside.com 2019 - 2024. All rights reserved.