Python Linux上的Rpy2&引用;R库不包含任何包“-错误
我尝试安装rpy2,但它无法加载任何软件包Python Linux上的Rpy2&引用;R库不包含任何包“-错误,python,r,rpy2,r-package,Python,R,Rpy2,R Package,我尝试安装rpy2,但它无法加载任何软件包 #!/usr/bin/python3.8 import rpy2 print("rpy2 version is:", rpy2.__version__) # >>rpy2 version is: 3.3.5 import rpy2.robjects as robjects # R PACKAGES # rpy2 is providing a function rpy2.ro
#!/usr/bin/python3.8
import rpy2
print("rpy2 version is:", rpy2.__version__)
# >>rpy2 version is: 3.3.5
import rpy2.robjects as robjects
# R PACKAGES
# rpy2 is providing a function rpy2.robjects.packages.importr()
# that makes that step very similar to importing Python packages.
from rpy2.robjects.packages import importr
base = importr('base')
utils = importr('utils')
from rpy2.robjects import Formula, Environment
from rpy2.robjects.vectors import IntVector, FloatVector
from rpy2.robjects.lib import grid
from rpy2.robjects.packages import data
from rpy2.rinterface_lib.embedded import RRuntimeError
import warnings
# The R 'print' function
rprint = robjects.globalenv.find("print")
stats = importr('stats')
grdevices = importr('grDevices')
datasets = importr('datasets')
grid.activate()
我的Linux是Mint 20
Python 3.8.2
R 3.6.3,rpy2 3.3.5(顺便说一句,与pip一起安装) 我记得有人说过如何从python中安装R包,我就是这么做的:
import rpy2.robjects.packages as rpackages
utils.chooseCRANmirror(ind=1)
packnames= ("ggplot2", "hexbin")
from rpy2.robjects.vectors import StrVector
# R vector of strings (idk what it does)
names_to_install= [x for x in packnames if not rpackages.isinstalled(x)]
if len(names_to_install) > 0:
utils.install_packages(StrVector(names_to_install))
quit()
# It will create a WARNING as such:
# R[write to console]: 'lib = "/usr/local/lib/R/site-library"' is not writable
# Would you like to use a personal library instead? (yes/No/cancel) yes
# Would you like to create a personal library
# ‘~/R/x86_64-pc-linux-gnu-library/3.6’
# to install packages into? (yes/No/cancel) yes
# SO JUST SAY YES TWICE AND IT WILL CREATE A NEW FOLDER FOR YOUR INSTALLED PACKAGES!!
好的,我的软件包安装在/R/x86_64-pc-linux-gnu-library/3.6中
但我后来改变了这一点,当我从互联网上尝试一些测试代码时,我得到一个警告,我没有软件包
#!/usr/bin/python3.8
import rpy2
print("rpy2 version is:", rpy2.__version__)
# >>rpy2 version is: 3.3.5
import rpy2.robjects as robjects
# R PACKAGES
# rpy2 is providing a function rpy2.robjects.packages.importr()
# that makes that step very similar to importing Python packages.
from rpy2.robjects.packages import importr
base = importr('base')
utils = importr('utils')
from rpy2.robjects import Formula, Environment
from rpy2.robjects.vectors import IntVector, FloatVector
from rpy2.robjects.lib import grid
from rpy2.robjects.packages import data
from rpy2.rinterface_lib.embedded import RRuntimeError
import warnings
# The R 'print' function
rprint = robjects.globalenv.find("print")
stats = importr('stats')
grdevices = importr('grDevices')
datasets = importr('datasets')
grid.activate()
警告是:
R[write to console]: Warning messages:
R[write to console]: 1:
R[write to console]: In (function (package, help, pos = 2, lib.loc = NULL, character.only = FALSE, :
R[write to console]:
R[write to console]: library ‘/usr/lib/R/site-library’ contains no packages
R[write to console]: 2:
R[write to console]: In (function (package, help, pos = 2, lib.loc = NULL, character.only = FALSE, :
R[write to console]:
R[write to console]: library ‘/usr/lib/R/site-library’ contains no packages
然后我尝试从R安装软件包,所以我打开R并键入
install.packages()
对于一些软件包,如base、UTIL、grDevices…,它们被算作基本软件包,它说出于这个原因它不会更新它。但我发现他们的路径是“/usr/lib/R/library”
然后,对于我想要安装的其他软件包,如ggplot2,它将其安装到“/usr/local/lib/R/site library”中,这是第一个安装步骤中需要的
这两个都不是rpy2想要的。它需要/usr/lib/R/site库
但我甚至发现在导入这样的包时可以添加路径:
base = importr('base', lib_loc="/usr/lib/R/library")
这有点奏效。
我已经从上面(第二个框)逐行测试了我的代码,并为使用importr导入的所有包添加了它。
而且x导入y的大部分也起了作用。只是不是网格。
从rpy2.robjects.lib导入网格
仍然给了我相同的“library'/usr/lib/R/site library'contains no packages”消息。
但是我不知道如何在那里添加路径
我和我的教授花了两天时间试图找到解决办法。我真的很绝望。
为什么路径甚至是这样一个问题?我没有看到任何人谈论它选择的默认路径是不正确的,我发现的一切都是针对windows的!如果默认值不正确,文档中不应该有吗?如果它只对其他人有效,我做错了什么
是一个类似的问题,但是他的rpy2想要使用usr/local/lib,这在我的例子中是正确的!!(没有真正的答案,至少我什么都不懂)R可以通过多种方式安装,并且可以在配置(可能是安装)时指定接收包的默认目录。如果您为整个系统安装了R,并且假设这是唯一安装的R,我们将其称为“system R”,并且安装R的目录、默认(“推荐”)软件包以及将安装的其他软件包位于/usr
下。如果您使用的是预编译和打包的R(例如RPM或deb),则确切位置将取决于该二进制软件包。在该目录中写入通常需要提升权限,这就是为什么需要sudo
除了该目录之外,还可以指定安装R包的其他目录。当R提示您使用用户本地目录时,就会发生这种情况。(注意:然后将软件包安装在~/R/x86\u 64-pc-linux-gnu-library/3.6
,而不是/R/x86\u 64-pc-linux-gnu-library/3.6
)。在R中时,命令.libPaths()
将告诉您R在哪里查找其包,该函数的R文档将列出R如何获取该信息
最后,您列出了几个目录,其中有软件包,或者没有软件包,或者您的问题中可能安装了软件包:
/usr/local/lib/R/site library
~/R/x86\u 64-pc-linux-gnu-library/3.6
/usr/lib/R/站点库
/usr/lib/R/library
几乎可以肯定的是,对于您安装的软件包的位置以及您认为它们安装在何处,存在着混淆。由于您sudo
,因此我建议您在某个时候卸载并重新安装R,按照R的建议在个人库中安装软件包,并设置环境变量R_LIBS_USER
指向该目录(请参阅)。这可能有助于设置rpy2