【问题标题】:getting a hashmap in R using rJava使用 rJava 在 R 中获取哈希图
【发布时间】:2010-02-12 01:56:36
【问题描述】:

我有一个带有数值的普通哈希图,并且想检索它的内容,最好是在一个列表中(但可以解决)。

可以吗?

【问题讨论】:

    标签: java r


    【解决方案1】:

    试试这个:

    library(rJava)
    .jinit()
    # create a hash map
    hm<-.jnew("java/util/HashMap")
    # using jrcall instead of jcall, since jrcall uses reflection to get types 
    .jrcall(hm,"put","one", "1")
    .jrcall(hm,"put","two","2")
    .jrcall(hm,"put","three", "3")
    
    # convert to R list
    keySet<-.jrcall(hm,"keySet")
    an_iter<-.jrcall(keySet,"iterator")
    aList <- list()
    while(.jrcall(an_iter,"hasNext")){
      key <- .jrcall(an_iter,"next");
      aList[[key]] <- .jrcall(hm,"get",key)
    }
    

    请注意,使用 .jrcall 的效率低于 .jcall。但是对于我的一生,我无法使用 .jcall 获得正确的方法签名。我想知道这是否与缺乏泛型有关。

    【讨论】:

    • 谢谢! .jcall 在迭代器上对我不起作用,但这有效。太棒了!
    【解决方案2】:

    我自己从未这样做过,但有一个示例 in the rJava documentation 使用 with 函数创建和使用 HashMap:

    HashMap <- J("java.util.HashMap")
    with( HashMap, new( SimpleEntry, "key", "value" ) )
    with( HashMap, SimpleEntry )
    

    【讨论】:

    • 感谢谢恩。如果 rJava 有一些相反方向的示例,那将会很有用。
    猜你喜欢
    • 1970-01-01
    • 2016-05-26
    • 2010-12-19
    • 2018-01-21
    • 2016-11-14
    • 1970-01-01
    • 2019-01-11
    • 2013-01-09
    • 1970-01-01
    相关资源
    最近更新 更多