我正在开发一个使用RJava进行标识符映射的包(在生物学中):BridgeDbR。其中一个方法调用Java方法,该方法具有vargs,mapID():
xref <- .jnew("org/bridgedb/Xref", identifier, datasource)
datatarget <- getDataSource(code=target)
targets = .jarray(c(datatarget), contents.class="org/bridgedb/DataSource")
这里getDataSource()方法返回一个类型为org.bridgedb。DataSource的Java对象。
然后进行实际的兴趣调用,其中(如上所示)xref和target是Java对象,mapper也是Java对象,见下文:
mappings = mapper$mapID(xref, targets)
此映射器对象是IDMapper接口的实例,并使用vargs定义mapID()方法:
public Set<Xref> mapID (Xref ref, DataSource... tgtDataSources)
throws IDMapperException;
现在,我想在没有数据源的情况下调用此方法。在Java中我会这样做:
someMapper.mapID(someXref)
...... Java找到了这个方法。
但是,我无法弄清楚如何在RJava中执行此操作。以下变体都不起作用(例如.jarray(c(),contents.class =“org / bridgedb / DataSource”)返回NULL):
mappings = mapper$mapID(xref, c())
mappings = mapper$mapID(xref)
mappings = mapper$mapID(xref, NULL)
mappings = mapper$mapID(xref, .jarray(c(), contents.class="org/bridgedb/DataSource"))
.jmethods(mapper,name =“mapID”)的输出是:
[1] "public java.util.Set org.bridgedb.rdb.SimpleGdbImplCommon.mapID(org.bridgedb.Xref,org.bridgedb.DataSource[]) throws org.bridgedb.IDMapperException"
[2] "public java.util.Map org.bridgedb.rdb.IDMapperRdb.mapID(java.util.Collection,org.bridgedb.DataSource[]) throws org.bridgedb.IDMapperException"
如何使用仅包含外部参照的RJava调用此Java方法(mapper $ mapID)?
答案 0 :(得分:1)
正如https://www.rforge.net/doc/packages/rJava/jarray.html所指出,您应该在调用.jarray
时提供一个列表,可能只有一个NULL
元素