2013-12-09 35 views
0

guys 我想在R中調用java,所以最重要的是如何在R和java之間轉換數據類型,我知道'.jnew''new'可以創建一個java對象,但是,之後我稱爲Java函數,我怎樣才能回報值轉換爲R數據類型R和java之間的數據類型轉換

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

爲例如,如何可以轉換j_d2到POSIXCT中的R 型得到任何幫助

回答

0

R不知道如何轉換其他通過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"