R 已创建的包未运行命名空间文件中导入包的函数

R 已创建的包未运行命名空间文件中导入包的函数,r,namespaces,devtools,R,Namespaces,Devtools,这是我的第一个包裹。下面是my.R文件的运行方式,其中包含3个函数,其中两个要导出。它们的实际内容无关紧要,只是它使用了大量的tidyverse函数 #' @import tidyverse #' @importFrom labelled set_variable_labels var_label #' @importFrom readxl read_excel cell_cols NULL #' Carregando dados brutos #' #' @param diretorio_

这是我的第一个包裹。下面是my.R文件的运行方式,其中包含3个函数,其中两个要导出。它们的实际内容无关紧要,只是它使用了大量的
tidyverse
函数

#' @import tidyverse
#' @importFrom labelled set_variable_labels var_label
#' @importFrom readxl read_excel cell_cols

NULL

#' Carregando dados brutos
#'
#' @param diretorio_dados Diretório onde os microdados originais em formato de texto estão armazenados
#'
#' @param diretorio_dicionario Diretório onde o dicionário da pesquisa em formato xls está armaezenado
#'
#' @param ... vetores com datas das pesquisas de interesse no  formato \code{c('trimestre', 'ano')}
#'
#' @return Lista de dataframes, sendo cada entrada um trimestre/ano em \code{...}
#' @encoding UTF-8
#' @export
#'
#' @examples
#' datazoom_pnadc('./Desktop', './Desktop', c(1, 2000), c(2, 2000))
#'
datazoom_pnadc <- function(diretorio_dados,
                           diretorio_dicionario,
                           ...) {


  return(NULL)
}

 #' Painel básico
 #'
 #' @param build_data Default \code{TRUE}.
 #' Se \code{TRUE}, implementa primeiro \code{\link{datazoom_pnadc}} e depois
 #' monta paineis de indivíduos. Se \code{FALSE}, a função constrói paneis a partir de dados já carregados no R
 #'
 #' @param dados_prontos Bases de dados para diferentes trimestres da PNAD contínua.
 #' Necessário se \code{build_data = FALSE}
 #'
 #' @param local_dados Diretório onde os microdados originais em formato de texto estão armazenados
 #' caso \code{build_data = TRUE}
 #'
 #' @param local_dicionarios Diretório onde o dicionário da pesquisa em formato xls está armaezenado caso
 #' \code{build_data = TRUE}
 #'
 #' @param periodos Lista de vetores com períodos de interesse no formato
 #' \code{periodos = list(c(trimestre1, ano1), c(trimestre2, ano2), ...)}
 #'
 #' @encoding UTF-8
 #'
 #' @return Lista de dataframes, sendo cada entrada um trimestre/ano
 #'
 #' @examples
 #' PNADC_2012 <- datazoom_pnadc(diretorio_dados = './Desktop',
 #' diretorio_dicionario = './pnadcontinua/Desktop',
 #' c(1,2012), c(2,2012))
 #'
 #' teste <- pnadc_painel_basico(build_data = FALSE,
 #'                              dados_prontos = PNADC_2012)
 #'
 #' teste2 <- pnadc_painel_basico(build_data = TRUE,
 #'                               local_dados = './pnadcontinua',
 #'                               local_dicionario = './pnadcontinua/Dicionario_e_input',
 #'                               periodos = list(c(1,2012), c(2,2012)))
 #' @export
pnadc_painel_basico <- function(build_data = TRUE, ...){
    return(NULL)

}
如果未事先设置
库(tidyverse)
库(带标签)
库(readxl)
,则安装和加载包后不会运行包中的函数

除了其他必需的部分之外,我的描述文件还包含以下内容:

Imports: 
    labelled,
    readxl,
    tidyverse

有人能帮忙吗?

tidyverse
Imports
移动到
DESCRIPTION
中的
将使其有效,但如果您正在开发正式软件包,则不推荐使用此方法。就像@Bruno评论的那样:

>usethis::use_包(“tidyverse”)
错误:“tidyverse”是一个元包,使用它很少是一个好主意
靠它。请确定所需的特定基础包
提供您需要的功能,并依赖它。获取数据
分析使用包结构但未实现
正式的R包,在依赖项中添加“tidyverse”是合理的
妥协。调用'use_package(“tidyverse”,type=“dependens”)`
这
将其放在
Imports
中不起作用的原因是,只有列出的包导出的变量才会放在搜索路径上,如以下部分所述:

只有导出的变量才会放置在附着的框架中。加载从其他包导入变量的包将导致这些其他包也被加载(除非它们已经被加载),但这些隐式加载不会将它们放置在搜索路径上。因此,包中的代码只能依赖于其自己名称空间中的对象,并且其导入(包括基本名称空间)是可见的

tidyverse
作为一个元包,不导出其包含的包的函数,而是使用
.onAttach
钩子来附加这些包(有关详细信息,请参见
tidyverse::.onAttach
)。这意味着,如果使用上述方法导入了
tidyverse
,那么该钩子将不会运行,其他包导出的变量也不会添加到搜索路径中,这就是您无法访问它们的原因


tidyverse
放在
dependens
下会运行
.onAttach
钩子,因此也会附加其他包。

我认为您不能导入tidyverse为什么不能?我使用了它的很多功能。不管怎样,即使我事先加载了tidyverse,我仍然会遇到其他软件包的问题我不是在问为什么,我也想,我只是从来没能做到,请尝试使用此软件包并使用this::use_软件包查看它显示了什么您是否正在尝试从.zip二进制版本或a.tar.gz源代码版本在另一台计算机上安装此软件包?我还没有尝试。我只是想把它安装在我自己的电脑上
Imports: 
    labelled,
    readxl,
    tidyverse