参考博客
https://stackoverflow.com/questions/68936589/how-to-select-r-installation-when-using-rpy2-on-conda
现在我遇到这样一个问题,服务器系统环境没有R(没有权限安装),我只能在minconda的conda环境中使用R, 使用方法如下
我现在想在另一个conda环境(pyg)中使用rpy2, 其中rpy2中对应的R环境事r40seurat40,例如我要导入mclust package, 操作如下
首先在r40seurat40的环境中安装mclust包
install.packages("mclust")
安装成功后,测试如下
然后进入pyg环境
conda activate pyg
进入路径
/home/yxkang/miniconda3/envs/r40seurat40/lib/R/lib
然后安装rpy2, 使用以下命令
export LDFLAGS="-Wl,-rpath,/home/yxkang/miniconda3/envs/r40seurat40/lib/R/lib"pip install rpy2 --force-reinstall --compile --no-binary rpy2
结果如下
此时直接测试rpy2会出问题,如下
运行python -m rpy2.situation
结果如下
因为需要设置R_HOME的系统变量
这里我使用的是
# the location of R (used for the mclust clustering)
import os
os.environ['R_HOME'] = "/home/yxkang/miniconda3/envs/r40seurat40/lib/R"
os.environ['R_USER'] = "/home/yxkang/miniconda3/envs/r40seurat40/lib/python3.8/site-packages/rpy2"
测试如下
# the location of R (used for the mclust clustering)
import os
os.environ['R_HOME'] = "/home/yxkang/miniconda3/envs/r40seurat40/lib/R"
os.environ['R_USER'] = "/home/yxkang/miniconda3/envs/r40seurat40/lib/python3.8/site-packages/rpy2"
import rpy2.robjects as robjects
import rpy2.robjects.numpy2riimport rpy2.robjects as ro# 调用 R 中的 sqrt 函数
r_sqrt = ro.r['sqrt']
print(r_sqrt(16)) # 输出 4
import rpy2.robjects as ro# 执行 R 代码
ro.r('x <- rnorm(10)') # 在 R 中创建一个正态分布的随机数向量
x = ro.r('x') # 获取 R 中的变量 x
print(x)
import pandas as pd
from rpy2.robjects import pandas2ri# 启动 pandas 和 R 之间的自动转换
pandas2ri.activate()# 创建 pandas DataFrame
df = pd.DataFrame({'A': [1, 2, 3],'B': [4, 5, 6]
})# 将 pandas DataFrame 转换为 R 的 data.frame
r_df = pandas2ri.py2rpy(df)
print(r_df)
from rpy2.robjects.packages import importr# 导入基础包 'base',这是 R 的核心包之一
base = importr('base')# 导入一个外部包,比如 'ggplot2'
ggplot2 = importr('ggplot2')mclust = importr('mclust')