我在我的函数上使用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)
}