有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

R与java之间的数据类型转换

伙计们 我想在R中调用java,所以最重要的是如何在R和java之间转换数据类型,我知道。jnew“new”可以创建java对象,但是,在调用java函数之后,如何将返回值转换为R数据类型

j_d2 = .jnew("java.util.Date",'2011-1-1')

例如,如何在R中将j_d2转换为POSIXCT类型 谢谢你的帮助


共 (1) 个答案

  1. # 1 楼答案

    R不知道如何将Java对象转换为通过JNI映射的原语(使用.jcall时)。您需要提供自己的转换,例如使用as解析日期项目的字符串表示。POSIXct(j_d2$toString,格式为“…”)。看见格式规范的strtime

    例如,在我的语言环境中,我使用以下格式:

    > library(rJava)
    > .jinit()
    
    > j_d2 <- str(.jnew("java/util/Date"))
    > j_d2$toLocaleString()
    [1] "8-Dec-2013 9:05:00 PM"
    > as.POSIXct(j_d2$toLocaleString(), format="%e-%b-%Y %X %p")
    [1] "2013-12-08 09:05:00 PST"
    

    如果需要转换大量日期,则字符串转换效率很低。或者,您可以使用Simon Urbanek描述的method

    > d <- .jnew("java/util/Date","2013/12/08 08:00")
    > d
    [1] "Java-Object{Sun Dec 08 08:00:00 PST 2013}"
    
    > # Java uses milliseconds, R expects seconds
    > as.POSIXct(.jcall(d,"J","getTime")/1000, origin = "1960-01-01")
    [1] "2003-12-08 08:00:00 PST"