We're Moving!

The Vertica Forum is moving to a new OpenText Analytics Database (Vertica) Community.

Join us there to post discussion topics, learn about

product releases, share tips, access the blog, and much more.

Create My New Community Account Now


UDTF R Error: RInterface.cpp:1387 Unable to find the cause. — Vertica Forum

UDTF R Error: RInterface.cpp:1387 Unable to find the cause.

edited March 2017 in General Discussion

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 ----

Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Emoji
Image
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file