R/jlValue_DataFrame.R

Defines functions names.DataFrame toR.DataFrame jlDataFrame

jlDataFrame <- function(...) {
    df <- list(...)
    ## TODO: check if elements of df have same dimension
    .RNamedList2jlDataFrame(df)
}

toR.DataFrame <- function(jlval) {
    nms <- toR(jlcall("names",jlval))
    res <- list()
    for(nm in nms) {
        res[[nm]] <- jlRcall("getindex",jlval, jlcolon(), jlsymbol(nm))
    }
    attr(res,"row.names") <- as.character(1:length(res[[1]]))
    class(res) <- "data.frame"
    res
}

names.DataFrame <- function(jlval) jlRcall("names",jlval)

"[.DataFrame" <- function(jlval, i, field) {
    if(missing(field)) {
        field <- i
        i <- jlcolon()
    } else {
        i <- jlvalue_eval(as.character(i))
    }
    if (field %in% names(jlval)) {
        jlcall("getindex",jlval, i, jlsymbol(field))
    } else {
        NULL
    }
}

"$.DataFrame" <- function(jlval, field) jlval[field]
rcqls/jl4R documentation built on April 14, 2024, 11:34 p.m.