通过 rJava 初始化一个 HashMap<String, Double>
Initializing a HashMap<String, Double> through rJava
我正在尝试使用类型为 <String, Double>
的 rJava 来初始化 HashMap,但不明白如何使用 rJava 接口来完成此操作。我基本上是在寻找
的等价物
HashMap<String, Double> x = new HashMap<String, Double>();
但改用 rJava。我可以很容易地生成一个 HashMap<String, String>
如下例所示,但自然不能用双精度填充值(这是我想要实现的)。
library(rJava)
.jinit()
# this works but gives me a <String, String> hashmap
x <- .jnew("java/util/HashMap")
.jrcall(x, "put", "a", "1")
x
#> [1] "Java-Object{{a=1}}"
# failing example of what I'd like to do
.jrcall(x, "put", "b", 2)
#> Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, :
#> java.lang.NoSuchMethodException: No suitable method for the given parameters
我已尝试使用 .jcall()
以以下主题的多种变体将组合串在一起:
.jcall("java/util/HashMap",
"Ljava/util/HashMap;[Ljava/lang/String;Ljava/lang/Double;",
"<init>")
#> Error in .jcall("java/util/HashMap", "Ljava/util/HashMap;
#> [Ljava/lang/String;Ljava/lang/Double;", :
#> method <init> with signature ()Ljava/util/HashMap;
#> [Ljava/lang/String;Ljava/lang/Double; not found
但到目前为止还没有成功。
您可以使用 .jnew("java/lang/Double", value)
创建一个 Double
对象:
library(rJava)
.jinit()
x <- .jnew("java/util/HashMap")
y <- .jnew("java/lang/Double", 3.14)
.jrcall(x, "put", "a", y)
x
[1] "Java-Object{{a=3.14}}"
我正在尝试使用类型为 <String, Double>
的 rJava 来初始化 HashMap,但不明白如何使用 rJava 接口来完成此操作。我基本上是在寻找
HashMap<String, Double> x = new HashMap<String, Double>();
但改用 rJava。我可以很容易地生成一个 HashMap<String, String>
如下例所示,但自然不能用双精度填充值(这是我想要实现的)。
library(rJava)
.jinit()
# this works but gives me a <String, String> hashmap
x <- .jnew("java/util/HashMap")
.jrcall(x, "put", "a", "1")
x
#> [1] "Java-Object{{a=1}}"
# failing example of what I'd like to do
.jrcall(x, "put", "b", 2)
#> Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, :
#> java.lang.NoSuchMethodException: No suitable method for the given parameters
我已尝试使用 .jcall()
以以下主题的多种变体将组合串在一起:
.jcall("java/util/HashMap",
"Ljava/util/HashMap;[Ljava/lang/String;Ljava/lang/Double;",
"<init>")
#> Error in .jcall("java/util/HashMap", "Ljava/util/HashMap;
#> [Ljava/lang/String;Ljava/lang/Double;", :
#> method <init> with signature ()Ljava/util/HashMap;
#> [Ljava/lang/String;Ljava/lang/Double; not found
但到目前为止还没有成功。
您可以使用 .jnew("java/lang/Double", value)
创建一个 Double
对象:
library(rJava)
.jinit()
x <- .jnew("java/util/HashMap")
y <- .jnew("java/lang/Double", 3.14)
.jrcall(x, "put", "a", y)
x
[1] "Java-Object{{a=3.14}}"