3

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

我正在尝试安装的包(我这样做是为了给出说明,以便其他人知道如何安装包 - 我自己只是从 RStudio 编译和安装包)可以在这里下载:

sjPlot 包

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

现在,如果我尝试,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/")失败(此目录包含源包、二进制包和 PACKAGE 描述文件)。

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

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

提前感谢丹尼尔

4

1 回答 1

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文件,您会发现 Collat​​e 和 Import 字段丢失。Roxygen 负责整理字段(如果您使用 RStudio 配置 roxygen 来执行此操作),但是您必须手动将导入字段写入说明。

查看您的功能之一:

#' @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 foreign 标签。我建议删除该行require('foreign')(如果您导入包,则不需要它)并添加一个 @import 外国标签。

比添加到您的描述文件

Imports:
    foreign

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

希望这会有所帮助(并且是正确的),

于 2013-11-07T12:05:42.630 回答