安装新版本R的无痛方法?
(在Windows上可能比Linux更相关)。从安装软件到复制所有设置/软件包,有人有好的升级技巧吗 这个建议包含在评论中,这是我最近一直在使用的。首先安装新版本,然后在旧版本中运行:安装新版本R的无痛方法?,r,upgrade,packages,R,Upgrade,Packages,(在Windows上可能比Linux更相关)。从安装软件到复制所有设置/软件包,有人有好的升级技巧吗 这个建议包含在评论中,这是我最近一直在使用的。首先安装新版本,然后在旧版本中运行: #--run in the old version of R setwd("C:/Temp/") packages <- installed.packages()[,"Package"] save(packages, file="Rpackages") 两个快速建议: 使用Gabor工具,据说这些工具包括
#--run in the old version of R
setwd("C:/Temp/")
packages <- installed.packages()[,"Package"]
save(packages, file="Rpackages")
两个快速建议:
如果您的软件包不是来自CRAN,则上述建议的方法将不会完全起作用。例如,个人软件包或从非CRAN站点下载的软件包 我在Windows上的首选方法(将2.10.1升级到2.11.0):
R-2.10.0/library/*
复制到R-2.11.0/library/
update.packages()
按照Dirk的建议,下面是一些在windows上执行此操作的R代码:
更新(15.04.11):我写了另一篇关于这个主题的文章,解释了如何处理常见的问题。为了完整起见,有一些方法可以防止你出现这个问题。正如德克所说,将您的包保存在计算机上的另一个目录中
install.packages("thepackage",lib="/path/to/directory/with/libraries")
也可以使用函数.libpath
更改默认的.Library
值
.libPaths("/path/to/directory/with/libraries")
这将把此路径作为.Library
变量的第一个值,并将其设为默认值
如果希望进一步自动化此操作,可以在Rprofile.site文件中指定此操作,该文件位于R构建的/etc/目录中。然后每次R加载时它都会自动加载,你不必再担心了。您只需从指定目录安装和加载软件包即可
最后,我的Rprofile.site中包含了一些小代码,允许我在安装新的R版本时重新安装所有软件包。在更新到新的R版本之前,只需将它们列出即可。我使用一个包含所有包的更新列表的.RData文件来实现这一点
library(utils)
## Check necessary packages
load("G:\Setinfo\R\packagelist.RData") # includes a vector "pkgs"
installed <- pkgs %in% installed.packages()[, 'Package']
if (length(pkgs[!installed]) >=1){
install.packages(pkgs[!installed])
}
当我安装新的R版本时,我只需将必要的元素添加到Rprofile.site文件中,所有软件包都会重新安装。无论如何,我必须调整Rprofile.site(使用总和对比,为Tinn-R添加额外的代码,诸如此类),所以这不是真正的额外工作。重新安装所有软件包需要额外的时间
这最后一点相当于原始问题中给出的解决方案。我只是不需要担心先得到“已安装”列表
同样,如果您的软件包不是从CRAN安装的,那么这也不是完美的。但此代码也可以轻松扩展以包括这些代码。两个选项:
.libpath(“C:/R/library”)
如果你有远见的话,这个被接受的答案可能会奏效,但我已经摆脱了旧版本,所以无法遵循这些方向。 下面描述的步骤适用于从2.1和3.1升级OSX 更新:要获取最新版本的目录(而不是键入3.1或3.2),可以使用以下命令。第二个变量直接转换为R变量,跳过
和。
和。DS_Store
,使用:
OLD=$(ls -d /Library/Frameworks/R.framework/Versions/*.* |tail -n 2 | head -n 1)Resources/library/
echo "packages = c(\"`ls $OLD | tail +4| paste -s -d ',' - | sed -E 's|,|\",\"|'g`\")" | tr -d "/"
(将|pbcopy
添加到末尾,将其直接复制到Mac剪贴板)
然后在R中,您可以粘贴生成的变量。一旦在新版本的R中定义了这一点,您就可以按照上面的说明遍历已安装的包
for (p in setdiff(packages, installed.packages()[,"Package"]))
install.packages(p, dependencies=TRUE, quiet=TRUE, ask=FALSE)
如果您使用的是Windows,则可能需要使用installr软件包:
install.packages(“installr”)
需要(安装程序)
更新程序()
最好的方法是使用RGui系统。您的所有软件包将被转移到新文件夹,旧的软件包将被删除或保存(您可以选择其中一个)。
然后,一旦再次打开RStudio,它会立即识别出您正在使用更新的版本。对我来说,这很有魅力
.对我来说,这一页很好
或
另一个选择是只安装新的选项,并在最后你把,例如在windows在我的电脑
.1(c)(
“D:/Documents/R/win library/3.2”,
“C:/程序文件/R/R-3.2.3/库”,
“C:/程序文件/R/R-3.2.0/库”,
“D:/Documents/R/win library/2.15”
)
最后一个版本的每个路径在我的例子中,我总是把第一个路径放在“D:/Documents/R/win library/3.2”中,这是固定的
然后我放了另一个,因为您不需要复制或移动任何软件包,在我的建议中称之为关于问题中给出的解决方案,如果您已经安装了新版本,那么运行旧版本的R可能并不容易。在这种情况下,您仍然可以重新安装以前的R版本中丢失的所有软件包接着
# Get names of packages in previous R version
old.packages <- list.files("/Library/Frameworks/R.framework/Versions/3.2/Resources/library")
# Install packages in the previous version.
# For each package p in previous version...
for (p in old.packages) {
# ... Only if p is not already installed
if (!(p %in% installed.packages()[,"Package"])) {
# Install p
install.packages(p)
}
}
#获取以前R版本中的包名称
old.packages我在Windows 8上,出于某种奇怪的原因,我无法使用我的internet连接安装软件包
我通常使用CRAN中的.zip文件安装它
在我从R3.2.5升级到R3.3.1之后
我只是简单地复制了
C:\Path\to\packa\R\win library\3.2
toC:\Path\to\packa\R\win library\3.3
然后我重新启动了R会话。工作得很好。
我还没见过他
OLD=$(ls -d /Library/Frameworks/R.framework/Versions/*.* |tail -n 2 | head -n 1)Resources/library/
echo "packages = c(\"`ls $OLD | tail +4| paste -s -d ',' - | sed -E 's|,|\",\"|'g`\")" | tr -d "/"
for (p in setdiff(packages, installed.packages()[,"Package"]))
install.packages(p, dependencies=TRUE, quiet=TRUE, ask=FALSE)
# Get names of packages in previous R version
old.packages <- list.files("/Library/Frameworks/R.framework/Versions/3.2/Resources/library")
# Install packages in the previous version.
# For each package p in previous version...
for (p in old.packages) {
# ... Only if p is not already installed
if (!(p %in% installed.packages()[,"Package"])) {
# Install p
install.packages(p)
}
}
sudo apt update && sudo apt --yes full-upgrade
sudo apt install --yes libappstream4 curl
### ov1 = online version; lv1 = local version (i.e. currently installed)
ov1=$(curl --silent --url https://packages.debian.org/sid/r-base |
grep 'meta name=\"Keywords\"' |
grep --only-matching '[0-9].*[0-9]') ; echo $ov1
## command -v = print a description of COMMAND similar to the `type' builtin
## && = if prior command succeeds, then do; || = if prior fails, then do
command -v 'R --version' &&
lv1=$(R --version |
grep --only-matching '[0-9\.]*[0-9]' |
## || = otherwise
head -1) ||
lv1=0
## 'lt' = less than
if dpkg --compare-versions "$lv1" 'lt' "$ov1"
then ## declare -a = indexed array
declare -a deb1=('r-base' 'r-base-dev' 'r-recommended')
for i in "${deb1[@]}"
do sudo apt install --yes "$i"
done
fi
### certain Debian packages are required by 'R' so best have these first
sudo apt install --yes ccache libcairo2-dev libxml2-dev libcurl4-openssl-dev \
libssl-dev liblapack-dev libssl-dev
declare -a pkg1=('data.table' 'ggplot2' 'knitr' 'devtools' 'roxygen2')
## installing as 'root' so these are installed in
Rscript -e ".libPaths()[1]"
for i in "${pkg1[@]}"
do sudo Rscript -e "install.packages('$i', dependencies=TRUE)"
done
### other useful additions
sudo apt install --yes libblas-dev libboost-dev libarmadillo-dev \
jags pandoc pandoc-citeproc
sudo apt update && sudo apt full-upgrade
install.packages("ropenblas")
ropenblas::rcompiler()