如何安装不在CRAN仓库中的软件包?

6

我正在尝试使用Google Trends数据,并发现一些未在CRAN上的包(GTrendsRGoogleTrends)。

我喜欢从这个博客中看到的RGoogleTrends包的内容,并想尝试一下。RGoogleTrends包的位置在这里:http://www.omegahat.org/RGoogleTrends/

首先,我正在使用Windows操作系统,并且我的R控制台中有一个选项:

>Packages>Install package(s) from local zip drives ...

这将导致以下结果:
> utils:::menuInstallLocal()
Error in read.dcf(file.path(pkgname, "DESCRIPTION"), c("Package", "Type")) : 
  cannot open the connection
In addition: Warning messages:
1: In unzip(zipname, exdir = dest) : error 1 in extracting from zip file
2: In read.dcf(file.path(pkgname, "DESCRIPTION"), c("Package", "Type")) :
  cannot open compressed file 'RGoogleTrends_0.2-1.tar.gz/DESCRIPTION', probable reason 'No such file or directory'

我猜这可能与文件是.gz而不是.zip有关。因此,我在R之外解压了.gz文件,然后将其压缩成.zip文件(肯定有更好的方法)。现在我可以安装.zip文件,但当我尝试使用library加载它时,会出现以下错误:
> library(RGoogleTrends)
Error in library(RGoogleTrends) : 
  ‘RGoogleTrends’ is not a valid installed package

我在这里做错了什么?

1
你要找的术语是“如何在Windows中构建软件包”。网上搜索可以得到足够多的结果。简而言之,你应该安装Rtools并运行“R CMD INSTALL --build yourfile.tar.gz”。 - Roman Luštrik
@RomanLuštrik - 如果我能在R之外打开.gz文件,那么我认为应该有一种方法可以加载包而不需要安装另一个程序 - 对吗?附言:我已经安装了cygwin,但从未通过它运行过R。 - Marc in the box
你尝试过按照 http://www.omegahat.org/ 的建议使用 install.packages(packageName, repos = "http://www.omegahat.org/R", type = "source") 吗? - GSee
@GSee - 对我不起作用。"install.packages(RGoogleTrends, repos = "http://www.omegahat.org/R", : object 'RGoogleTrends' not found" - Marc in the box
3个回答

14

你需要 R 版本 3,你可以在这里获得如下链接: http://cran.cnr.berkeley.edu/bin/windows/base/R-3.0.1-win.exe

接着打开 R 并输入:

install.packages("devtools")
require(devtools)
install_url("http://www.omegahat.org/RGoogleTrends/RGoogleTrends_0.2-1.tar.gz")
require(RGoogleTrends)
ls("package:RGoogleTrends")

在过程中您可能会收到一些警告,请忽略它们。然后您应该可以使用该程序包。


谢谢Dimitrii - 这个很好用。安装包也很容易安装 - 让它正常工作似乎是下一个挑战,干杯。 - Marc in the box

4
我认为Linux和Windows的软件包构建方式不同,因此无法将.gz版本转换为.zip。
这个链接表明您应该能够只使用未压缩的版本... http://decisionstats.com/2013/04/26/using-a-linux-only-package-in-windows-rstats/ 其中的评论建议使用devtools或Rtools,两者都允许从gz文件直接安装。
直接解压并使用:
  1. 从tar.gz提取到.tar
  2. 从.tar中提取
  3. 将工作目录设置为R子文件夹,例如Setwd("C:\\Users\\x\\Documents\\RGoogleTrends_0.2-1.tar\\RGoogleTrends_0.2-1\\RGoogleTrends\\R")
  4. 加载所有函数for (i in list.files()){source(i)}
使用devtools:
  1. 安装 devtools
  2. library("devtools")
  3. 将 setwd 设置为包含 .tar.gz 文件的文件夹
  4. install("RGoogleTrends_0.2-1.tar.gz")

使用 Rtools

  1. http://cran.r-project.org/bin/windows/Rtools/ 下载正确版本
  2. 从 .exe 文件进行安装
  3. 检查是否需要在 http://cran.r-project.org/bin/windows/Rtools/Rtools.txt 中进行任何操作
  4. 从命令行运行 R(在开始菜单中搜索 cmd)- 请参见
  5. 将 setwd 设置为包含 .tar.gz 文件的文件夹
  6. R CMD INSTALL *.tar.gz

我更喜欢使用 devtools 的方法


1
我为您加入了一些如何操作的内容。 - Steph Locke
只是为了添加一个使用devtools的方法(因为这里的选项对我不起作用),我解压了(两次)tar.gz并使用未压缩的文件夹进行了install。(在Windows 7上使用R 3.3.0,devtools_1.12.0和Rtools 3.4.0.1962) - Cath

1

我遇到了各种错误,比如:

not supported in current version
cannot find DEPENDENCIES
cannot unzip

如果您正在运行 Windows,并以所有用户身份安装,同时以普通用户身份运行(出于各种原因,这是应该的),那么安装软件包可能会有些麻烦。
我最终采取的方法是:
close R
open R as admin
load base package

我已经下载了这些软件包,以便在离线情况下进行安装,它们位于f:\software\rcontrib
然后运行:
files=list.files(path="f:/software/rcontrib",pattern="*.zip",include.dirs=TRUE)
for (i in seq(along=files)){install.packages(files[i],repos=NULL)}

这将从本地目录/共享文件夹/非互联网位置批量加载软件包。
然后你可以退出R。在机器上以任何用户身份运行,应该能够使用这些软件包。
这将希望能够帮助人们省去我浪费的几个小时尝试批量加载和克服实际上是Windows安全性错误的R的时间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接