人 我想在R中调用java,所以最重要的是如何在R和java之间转换数据类型,我知道'.jnew''new'可以创建一个java对象,但是,在我调用java函数之后,怎么能我将返回值转换为R数据类型
j_d2 = .jnew("java.util.Date",'2011-1-1')
例如,如何在R中将j_d2转换为POSIXCT类型 感谢任何帮助
答案 0 :(得分:0)
R不知道如何转换Java对象,而不是其他通过JNI映射的基元(使用.jcall时)。您需要提供自己的转化,例如通过使用as.POSIXct(j_d2 $ toString,format =“...”)解析日期项目的字符串表示形式。有关格式规范,请参阅?strptime。
例如,在我的语言环境中,我使用以下格式:
> 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"