python - 在 Python Jupyter notebook 中使用 rpy2 安装 Bioconductor 包
问题描述
我正在尝试在 Python Jupyter 笔记本中使用 rpy2 从 Bioconductor 安装“pcaMethods”。
这是我尝试过的
from rpy2.robjects.packages import importr
utils = importr('utils')
utils.install_packages('mice') # all of this works
base = importr('base')
base.source("http://www.bioconductor.org/biocLite.R")
biocinstaller = importr("BiocInstaller") # this doesn't work
biocinstaller.biocLite("pcaMethods") # this doesn't work
# load the installed package
pcaMethods = importr("pcaMethods")
这是我尝试安装时遇到的错误pcaMethods
:
Error in if (answer %in% allowed) break : argument is of length zero
有人知道我在做什么错吗?
解决方案
这个介绍来自这个SO question:
“参数长度为零”是一个非常具体的问题,它来自我最不喜欢的 R 元素之一。让我来演示一下这个问题:
> FALSE == "turnip"
[1] FALSE
> TRUE == "turnip"
[1] FALSE
> NA == "turnip"
[1] NA
> NULL == "turnip"
logical(0)
如您所见,与 NULL 的比较不仅不会产生布尔值,它们根本不会产生值 - 并且控制流倾向于期望检查会产生某种输出。当它们产生零长度输出时......“参数长度为零”。
从这里开始,您的其中一条线似乎引起了这种行为。我想交互式 R 的库路径与 rpy 使用的 R 的库路径有些不同,这与您的情况不匹配。
同样重要的是要注意,在第一次执行代码期间,您应该只执行一次安装过程:
base.source("http://www.bioconductor.org/biocLite.R")
biocinstaller = importr("BiocInstaller") # this doesn't work
biocinstaller.biocLite("pcaMethods") # this doesn't work
稍后你只需要加载包
# load the installed package
pcaMethods = importr("pcaMethods")
推荐阅读
- android - Android Studio - 无法下载 sdk-common.jar
- apache-spark - 如何导出非 PMML 算法以预测另一个 JVM 进程中的值
- javascript - highcharts.js 列/条重叠(日期时间 Xaxis)
- google-cloud-sql - 实例和存储可靠性
- mongodb - Mongoose findOneAndUpdate 返回未更新的模型
- angular - 使用rest api来自linkedin的错误响应
- amazon-web-services - 我们可以在 AWS Lambda 中创建不同大小的视频吗
- api - Jaeger 是否提供 trace api
- javascript - 如何使用 vanilla Javascript 提取 HTTP URL?
- linux - Linux Bluez RFCOMM:连接被拒绝