簡體   English   中英

Function 安裝 package 后出現錯誤但在 R 中的全局環境中沒有

[英]Function after installing the package giving error but not in the global environment in R

我創建了一個 package,其中一個 function 如下:

tab_std <- function(data, var, footer, numdig = 0, sorted = FALSE,masking, ...){
  var1 <- rlang::parse_expr(var)
  expss::var_lab(data[[var]]) <- ""
  if (sorted) {
    if(is.list(lst) & length(lst) == 0) {tab1 <- expss::cro_cpct(data[[var]]) %>% tab_sort_desc
    } else {
      tab1 <- expss::cro_cpct(data[[var]],lst) %>% tab_sort_desc
    }
  } else {
    if(is.list(lst) & length(lst) == 0) {tab1 <- expss::cro_cpct(data[[var1]])
    } else {
      tab1 <- expss::cro_cpct(data[[var]],lst)
    }
  }
  tab1 <- as.data.frame(tab1)
  tab1[which(tab1[,1]=="#Total cases"),1] <- Nstring
  setnames(tab1,"row_labels"," ")
  tab1[is.na(tab1)] <- 0
  tab1 <- tab1 %>%
    mutate(
      across(
        .cols = where(is.numeric),
        .fns = ~ round_half_up(.x,digits = numdig)))
  if (masking == TRUE) {
    mask_indices <- sapply(tab1, function(x) x[length(x)]< freq_mask) %>% which()
    tab1[-nrow(tab1), mask_indices] <- "--"
    tab1[-nrow(tab1), -c(1)] <- sapply(tab1[-nrow(tab1), -c(1)],function(x) ifelse(x=="--","--",paste(format(x,nsmall = numdig),"%",sep ="" )))

  }else{
    tab1[-nrow(tab1), -c(1)] <- sapply(tab1[-nrow(tab1), -c(1)],function(x) paste(format(x,nsmall = numdig),"%",sep ="" ))
  }

  if (Nstring_Position == "Top") {
    i <- match(Nstring, tab1[,1])
    tab1 <- rbind(tab1[i,], tab1[-i,])}
  if(missing(footer)){tab2 <- tab1 %>% flextable() %>% mercer_style()}
  else{tab2 <- tab1 %>% flextable() %>% add_footer_lines(footer) %>% mercer_style()}
  tab2
}

This function after installing package gives below error: Show in New Window Error in rep.default(data, nrows): attempt to replicate an object of type 'closure'

錯誤在這一步:

expss::cro_cpct(data[[var]], lst)

但是,如果我在全局環境中運行這個 function 它工作正常。 此 function 工作良好,否則僅當我將其包含在 package 中時才會發生錯誤。 我在 package 或 function 中有什么遺漏嗎?

我在您的 function 的 arguments 中看不到“lst”。 而且我知道'dplyr' package 中有'lst' function。 並且錯誤消息說“cro_cpct”試圖復制 function(“關閉”)。 也許,您忘記在 function arguments 中添加“lst”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM