-1

我想在我的包中包含mice::mice 函数来对我的数据执行插补。

我使用 Roxygen 列出进口

#' @param data dataset to be used for imputation
#' @importFrom dplyr select_
#' @importFrom mice mice complete
#' @return A list
#' @export
#' 
impute_data <- function(data, vars, seed)
{
     data_used <- select_(data,vars)
     mice_data <- complete(mice(data_used, seed = seed))
     return(mice_data)
}

这个函数在我测试代码时工作正常,但是当我构建包并尝试使用它时,我收到以下错误

Error in check.method(setup, data) : 
  The following functions were not found: mice.impute.pmm,mice.impute.pmm, mice.impute.pmm, mice.impute.pmm, mice.impute.pmm 

我试图将错误中提到的所有功能添加到导入中,但它对结果没有任何影响。

我错过了什么?我从来没有发现过这样的问题。

4

2 回答 2

0

您好,即使帖子较旧,

最近,我遇到了同样的问题,Erdogan CEVHER 和 mickkk 提出的解决方案对我不起作用。我通过主动加载mice包解决了这个问题,同时加载了我自己的包。有关更多详细信息,请参阅R-Package-Dependencies

除了包开发过程中需要的步骤,这里是我推荐的:

第 1 部分:将鼠标添加到包的说明文件中的Depends:( not Import: ) 字段。

Depends: mice (>= VERSIONNUMBER)

第 2 部分:import(mice)在 NAMESPACE 中使用(仅适用于devtools::check()

import(mice)

第 3 部分:mice::例如,使用 引用每个函数

mice::mice(data, method="pmm")
于 2017-11-28T07:07:56.627 回答
0

您忘记处理DESCRIPTION文件!您只处理 impute_data.R。

你的问题很相似: 当我在我的函数中使用另一个包的函数时,我应该放什么 roxygen

我在那里给出了答案(请在发布任何问题之前搜索类似的问题)。对于您的情况:

首先,了解你的

sessionInfo() 
getwd() # your R's working directory
.libPaths() # your R's library location

Step0下载并安装必要的包:

library(roxygen2)
library(devtools)
library(digest)

Step1将所有相关的“.R”文件(yourfunction1.R、yourfunction2.R、yourfunction3.R、impute_data.R)放入 R 的工作目录。

步骤 2在 R 的工作目录中创建包骨架:在运行以下命令之前,确保 R 的工作目录中没有名为“yourpackage”的文件夹。(来自 R 的控制台)

package.skeleton(name = "yourpackage", code_files = c("yourfunction1.R", "yourfunction2.R", "yourfunction3.R", "impute_data.R"), path = ".")

运行后package.skeleton,文件夹 yourpackage 会在 R 的工作目录中创建。

Read-and-delete-me从 Windows 资源管理器中删除文件。
删除 YourR'sWorkingDirectory\yourpackage\man 文件夹中的“yourpackage-package.Rd”文件
(不要删除 YourR'sWorkingDirectory\yourpackage\man 文件夹中的“yourpackage.Rd”文件!)

步骤 3在“.R”文件 (impute_data.R) 的序言​​末尾,输入以下内容(如果您在步骤 1 中没有这样做):

#' @importFrom mice mice
#' @importFrom mice complete
#' @export
impute_data <- function(...) {...

Step4DESCRIPTION你的包的文件中,在Imports部分中,添加:

Imports:
    mice(>= VersionNumber)

其中 VersionNumber 是您正在使用的鼠标包的版本号。您可以通过在 RevolutionREnterprise 的对象浏览器中右键单击任何函数(来自 yourpackage)找到版本号;并进入生成的 .html 帮助文件的底部。在那里,显示了包的版本号。

在 Step2 中,package.skeleton 自动生成了一个 NAMESPACE 文件,其内容为:

exportPattern("^[[:alpha:]]+")

不要手动处理此 NAMESPACE 文件。

Step5 roxygenize 你想要创建的包(“yourpackage”)

library(roxygen2)
roxygenize("yourpackage")

在 roxygenization 时,您的包的 NAMESPACE 文件的内容会自动转换exportPattern("^[[:alpha:]]+")

# Generated by roxygen2: do not edit by hand

export(impute_data)
importFrom(mice,mice)
importFrom(mice,complete)

Step6构建你的包:(
首先,从 Windows 资源管理器中删除 YourR'sWorkingDirectoryFolder\yourpackage 文件夹中的 "src-i386" 和 "src-x64" 文件夹(如果有的话))
(再次确保没有 "yourpackage-package.Rd " YourR'sWorkingDirectory\yourpackage\man 文件夹中的文件。如果有,请在构建之前将其删除)

build("yourpackage")

Step7安装你的包:

install("yourpackage")

Step8通过加载你的包并在包中运行一个函数来检查一切是否顺利。

library(yourpackage)
impute_data(a,b,1235) # "impute_data" is the function in the package "yourpackage"

第 9 步检查您的包是否可加载到 CRAN(综合 R 归档网络)(如果您想共享您的包):

(首先,从 Windows 资源管理器中删除 YourR'sWorkingDirectoryFolder\yourpackage 文件夹中的“src-i386”和“src-x64”文件夹(如果有))
(再次确保 YourR' 中没有“yourpackage-package.Rd”文件sWorkingDirectory\yourpackage\man 文件夹。如果有,删除前检查)

从 DOS 命令提示符:
开始 - cmd - 回车。传递到 R 的工作目录(您的 R 的工作目录通过 getwd() 知道)并进行 CRAN 检查:

cd C:\Users\User\Documents\Revolution
R CMD check yourpackage

从 R 的控制台:

devtools::check("C:/Users/User/Documents/Revolution/yourpackage")
于 2016-06-02T08:03:15.387 回答