UDTF R Error: RInterface.cpp:1387 Unable to find the cause.
Hi,
I am getting the following error when running an updated R UDF that calculates p-values. Having a very difficult time determining the cause of the error. We have similar code to calculate a fisher test which is working. Could use some help determining the cause of the error. The complete R UDF code is below.
[Vertica]VJDBC ERROR: Failure in UDx RPC call InvokeProcessPartition(): Error calling processPartition() in User Defined Object [p_adjust] at [/scratch_a/release/svrtar28745/vbuild/vertica/OSS/UDxFence/RInterface.cpp:1387], error code: 0, message: Exception in processPartitionForR: [Returned string value '[90]' with length [2] is greater than declared field length of [1] at output column index [0]])
R_version: R version 3.3.2 (2016-10-31)
Vertica Analytic Database v7.2.3-14
whatcurrentTime <- function() {
return(format(Sys.time(), "%Y-%m-%d %H:%M:%S"))
}
logMessage <- function(message) {
print(paste0(c(message, ": ", currentTime()), collapse=""))
}
p_adjust <- function(data, params) {
logMessage("Executing p_adjust")
logMessage("Extracting parameter values")
colnames(data) <- c("ID", "p_value") res <- data.frame(ID=data$ID, p_value=data$p_value, stringsAsFactors=FALSE) p_adjust_method <- match.arg(params[["method"]], choices=p.adjust.methods, several.ok=FALSE) logMessage("Calculating adjusted p-values") res$padj <- p.adjust(data$p_value, method=p_adjust_method) return(res)
}
p_adjust_factory <- function() {
return(list(name=p_adjust, udxtype=c("transform"), intype=c("char", "float"),
outtype=c("char", "float", "float"),
outtypecallback=p_adjust_output, parametertypecallback=p_adjust_parameters, volatility=c("stable")))
}
p_adjust_output <- function(data, params) {
return(data.frame(datatype = c("char", "float", "float"), length = NA, scale = NA,
name = c("ID", "p_value", "padj")))
}
p_adjust_parameters <- function(data, params) {
return(data.frame(datatype = c("varchar"), length = NA, scale = NA, name = c("method")))
}
--- EOF ----