如何在R中转换角色中的任何对象?

Sté*_*e C 0 java types r

我使用wordnet库,我想获得令牌的wordnet索引以供将来使用.

library(wordnet)
filter <- getTermFilter("ExactMatchFilter", "proud", TRUE)
terms <- getIndexTerms("ADJECTIVE", 1, filter)
terms


[1] "Java-Object{Lemma: proud  POS: adj  Tag-Sense-Count: 2\nList of Synsets (2)\n  #1: 1817423\n  #2: 1231908\nList of Pointers (4)\n  #1: ! (Antonym)\n  #2: & (Similar to)\n  #3: ^ (Also see)\n  #4: = (Attribute)}"
Run Code Online (Sandbox Code Playgroud)

terms是一个带有一些方法的Java-Object:

names(terms[[1]])
[1] "getLemma()"         "getSynsets()"       "getPointers()"      "getPartOfSpeech()"  "getSynsetCount()"   "getTagSenseCount()" "getPointerCount()" 
[8] "toString()"         "compareTo("         "compareTo("         "wait("              "wait("              "wait()"             "equals("           
[15] "hashCode()"         "getClass()"         "notify()"           "notifyAll()"    
Run Code Online (Sandbox Code Playgroud)

但似乎并非所有工作都有效

getLemma(terms[[1]])
[1] "proud"

toString(terms[[1]])
Erreur dans as.character.default(<S4 object of class "jobjRef">) : 
pas de méthode pour convertir automatiquement cette classe S4 en vecteur
Run Code Online (Sandbox Code Playgroud)

我想从条件[[1]]中提取代码,这里是"#1:1817423",我认为我可以使用substring或regex但到目前为止我只是无法转换字符串中的对象以便我可以使用它.任何的想法 ?

str(terms[[1]]) 
Formal class 'jobjRef' [package "rJava"] with 2 slots
..@ jobj  :<externalptr> 
..@ jclass: chr "java/lang/Object"

unclass(terms[[1]])
<S4 Type Object>
attr(,"jobj")
<pointer: 0x000000000cb81050>
attr(,"jclass")
[1] "java/lang/Object"
Run Code Online (Sandbox Code Playgroud)

Ben*_*ker 5

看起来这个jobjRef类的行为类似于(或实际上可能是)一个引用类,它使用稍微不同的面向对象系统.在这个世界中,对象的成员/元素/槽是可以通过object$method()在对象上运行相应方法来调用 的方法,例如terms[[1]]$toString()(但是,我不知道/不能解释为什么getLemma(terms[[1]])有效而不能解释toString(terms[[1]]). ..)

这是基本的想法,但我不确定我是否正确了解所有细节.如果有人想在这里或在另一个答案中纠正我的术语,那对我来说没问题......