我在Ubuntu 16.04上运行(在联想ThinkPak T450上)。我安装了R版本3.4.1,按照说明here通过Rbloggers安装。
从这里开始,我想开始安装软件包,但是如果我从命令行运行R而没有root权限,我就无法访问CRAN镜像。也就是说,当我运行install.packages('dplyr')
(或任何install.packages('blah')
)时,我收到以下错误
--- Please select a CRAN mirror for use in this session ---
Error: .onLoad failed in loadNamespace() for 'tcltk', details:
call: fun(libname, pkgname)
error: Can't find a usable init.tcl in the following directories:
/opt/anaconda1anaconda2anaconda3/lib/tcl8.5 ./lib/tcl8.5 ./lib/tcl8.5 ./library ./library ./tcl8.5.18/library ./tcl8.5.18/library
出现该错误,不会出现CRAN镜像对话框,因此无法安装软件包。注意:当我以root权限启动R(即,通过> sudo R
启动)时,不会发生此错误,但我不想以root身份安装软件包。
预先感谢您提供帮助,我们可以发送给您!
编辑:指定repo也会导致错误(在下面的文件路径中,我用user-name
替换了我的用户名)。
例如:install.packages('Rcpp',repos='http://cran.us.r-project.org')
终止于:
installing to /home/user-name/R/x86_64-pc-linux-gnu-library/3.4/Rcpp/libs
** R
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
Error: package or namespace load failed for ‘Rcpp’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/home/user-name/R/x86_64-pc-linux-gnu-library/3.4/Rcpp/libs/Rcpp.so':
/home/user-name/R/x86_64-pc-linux-gnu-library/3.4/Rcpp/libs/Rcpp.so: undefined symbol: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/home/user-name/R/x86_64-pc-linux-gnu-library/3.4/Rcpp’
例如,install.packages('dplyr',repos='http://cran.us.r-project.org')
终止于:
installing to /home/user-name/R/x86_64-pc-linux-gnu-library/3.4/dplyr/libs
** R
** data
*** moving datasets to lazyload DB
** inst
** preparing package for lazy loading
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/home/user-name/R/x86_64-pc-linux-gnu-library/3.4/bindrcpp/libs/bindrcpp.so':
/home/user-name/anaconda3/lib/R/bin/exec/../../lib/../.././libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/user-name/R/x86_64-pc-linux-gnu-library/3.4/bindrcpp/libs/bindrcpp.so)
ERROR: lazy loading failed for package ‘dplyr’
* removing ‘/home/user-name/R/x86_64-pc-linux-gnu-library/3.4/dplyr’
答案 0 :(得分:1)
正如DirkEddelbuettel在评论中指出的那样,问题是Anaconda和R的混合。解决这个问题:
我首先查看> conda list
并意识到软件包是r-base
,从Anaconda卸载了R软件包;因此运行> conda remove r-base
。
接下来,通过查看> which R
的输出,很明显我们仍在尝试从../anaconda3/bin/..
目录执行。我怀疑有一种快速的方法可以通过导出或bashrc修改(或类似的东西)来改变它,但对我来说,最快的解决方法是运行> sudo apt-get install r-base r-base-dev
,它已经花费了0.2秒,因为它们已经是已安装,但它确实影响了系统查找到的相应目录,对我来说这是/usr/bin/R/
。
从这里我已经能够安装我需要的一切。
注意:回想一下,我怀疑当我通过conda安装rpy2时发生了“混音”。