从源代码安装包会在R中抛出“package not available”

时间:2013-11-07 11:04:43

标签: r installation package

我在这里阅读了很多关于如何从本地文件,源代码等安装R软件包的帖子,但我仍然遇到安装(我自己的)软件包的麻烦。该软件包是使用RStudio,Roxygen2和RTools(Windows)创建的。

我正在尝试安装的软件包(我这样做是为了给出一条指令让其他人知道如何安装软件包 - 我自己只是从RStudio编译和安装软件包)可以在这里下载:

sjPlot-package

我还使用write_PACKAGES()创建了一个PACKAGE描述,该描述位于我的服务器上与包相同的目录中。

现在,如果我尝试install.packages("sjPlot_0.1", contrib.url="http://www.strengejacke.de/R-Stuff/sjPlot/"),我会收到以下错误消息:

  

install.packages中的警告:     包'sjPlot_0.1'不可用(对于R版本3.0.2)

如果我使用install.packages("sjPlot_0.1", repos="http://www.strengejacke.de/R-Stuff/sjPlot/"),我会收到以下错误消息:

  

源存储库无法检查版本     install.packages出错:行起始'...'格式错误!

此外,通过install.packages("sjPlot_0.1", contriburl="C:/Users/Luedeke/Dropbox/R-Statistics/packages/")的本地安装失败(此目录包含source-package,binary-package和PACKAGE descr。文件)。

我知道有很多关于如何安装R软件包的帖子,我读了一些 - 也许我错过了正确的软件包,如果有的话,请原谅我再次提出这个问题。

我的问题是:我(或其他人)如何安装我的R包(包括安装依赖项会很好)?

提前致谢 丹尼尔

1 个答案:

答案 0 :(得分:3)

您的包裹未通过R CMD check

> R CMD check sjPlot_0.1.tar.gz

* using log directory ‘/home/edisz/Downloads/sj_tmp/sjPlot.Rcheck’
* using R version 3.0.2 (2013-09-25)
* using platform: x86_64-pc-linux-gnu (64-bit)
* using session charset: UTF-8
* checking for file ‘sjPlot/DESCRIPTION’ ... OK
* checking extension type ... Package
* this is package ‘sjPlot’ version ‘0.1’
* checking package namespace information ... OK
* checking package dependencies ... ERROR
Namespace dependencies not required:
  ‘HH’ ‘MASS’ ‘car’ ‘faraway’ ‘foreign’ ‘ggplot2’ ‘lmtest’ ‘plyr’
  ‘reshape2’ ‘scales’ ‘vcd’

See the information on DESCRIPTION files in the chapter ‘Creating R
packages’ of the ‘Writing R Extensions’ manual.

Exited with status 1.

查看您的DESCRIPTION文件,您会看到缺少整理和导入字段。 Roxygen负责Collat​​e字段(如果您正在使用RStudio配置roxygen这样做),但是您必须手动将Import字段写入DESCRIPTION。

查看您的一个功能:

#' @title Import SPSS dataset as data frame into R
[snip]
#'          
#' @param path the file path to the SPSS dataset
#' @param enc the file encoding of the SPSS dataset
#' @return a data frame containing the SPSS data. retrieve value labels with \code{\link{sji.getValueLabels}}
#'   and variable labels with \code{\link{sji.getVariableLabels}}

[snip]
#' @export
sji.SPSS <- function(path, enc=NA) {
  # init foreign package
  require("foreign")
  # import data as data frame
  data.spss <- read.spss(path, to.data.frame=TRUE, use.value.labels=FALSE, reencode=enc)
  # return data frame
  return(data.spss)
}

您看到有一个require('foreign')调用,但没有@import外部标记。 我建议删除行require('foreign')(如果导入包,则不需要它)并添加@import外部标记。

添加到您的描述文件

Imports:
    foreign

对所有其他功能和包执行此操作。

希望这有助于(并且是正确的),