R数据表内部函数

时间:2017-07-18 18:45:46

标签: r data.table

我在我的函数上使用R data.table但是我得到了一个奇怪的行为。在line log <- dados[, .N, by=erros]数据表上不要对数据进行sumarize。它给我Null data.table(0行和0列)。数据表具有列错误,如果在命令行上运行代码,则它可以完美地运行。有人可以给我一些帮助吗?该项目可以找到here

estatisticas_amostra <- function(df, columnName,  type = "cpf"){
  require(data.table)
  library(data.table)
  setDT(df)
  dados_validados <- valida_doc(df[, columnName, with, F], type = type, log = TRUE)
  setDT(dados_validados)
  return(sumarizando_dados(dados_validados))

}
sumarizando_dados <- function(dados){
  log <- dados[, .N, by=erros]
  print(log)
  t <- data.table("Corretos"=0,"Primeiro digito errado"=1,"Segundo Digito errado"=2)
  log[, erros:=names(t)[match(erros, t)]]
  return(log)
}

diagnostica_RA <- function(df, nomes_colunas, types){
  if(length(types) != length(nomes_colunas)){
    stop("Types e nomes_colunas devem ter o mesmo tamanho")
  }
  estatistica <- data.frame(tipo = character(0),
                            validos = integer(0),
                            invalidos = integer(0),
                            sem_character = integer(0),
                            characters_invalido = integer(0),
                            zeros = integer(0),
                            characters_iguais = integer(0),
                            primeiro_digito_invalido = integer(0),
                            segundo_digito_invalido = integer(0)
                            )

  todas <- mapply(function(column, type){
    result <- estatisticas_amostra(df, column, type)
    result[, type:= type]
    retun(result)
  }, nomes_colunas, types)
  todas <- rbindlist(todas)
  return(todas)
}



tabulacaoDOC <- function(input_file = NULL,data = NULL, columns, types){
      require("data.table")
      if(length(columns) != length(types)){
        stop("Columns and types have to be of the same size.")
      }

      if(is.null(input_file) & is.null(data)){
        stop("You have to give a input_file or a data")
      }
      if(!is.null(input_file) & is.null(data)){
        if(file.exists(input_file)){
          data <- data.table::fread(input_file)
        }else{
          stop("It is not possible to read the input_file")
        }
      }
      diagnostica_RA(data, nomes_colunas = columns, types = types)
    }

0 个答案:

没有答案