在我的包中的另一个包中使用'as'/ coerce方法

时间:2019-01-15 04:54:40

标签: r

我正在写一个R包,并且想在内部使用另一个包中的'as'函数强制一个对象。但是我不知道如何像正常导出函数那样将其导入到包中(使用importFrom或:: :)。

如何从另一包中将特定形式的'as'方法导入到我的包中?还是其他软件包中的所有“ as”方法?

具体来说:我的包(celaref)中使用的“ contrast_each_group_to_the_rest”功能仅在您同时调用library(MAST)和library(celaref)时才起作用。

当我导入“ MAST”包时,我希望它使用的'as'方法在public object GetData() { object response = ""; string token = "EF232354"; string baseUrl = ConfigurationManager.AppSettings["BaseURL"].ToString(); string endPoint = ConfigurationManager.AppSettings["EndPoint"].ToString(); var httpWebRequest = (HttpWebRequest) WebRequest.Create(baseUrl + endPoint); httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = HttpVerb.GET.ToString(); httpWebRequest.Headers.Add("token", token); var httpResponse = (HttpWebResponse) httpWebRequest.GetResponse(); Stream dataStream = httpResponse.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); using(JsonReader sdr = new JsonTextReader(reader)) { JsonSerializer serializer = new JsonSerializer(); response = serializer.Deserialize(sdr); } return response; } 中显示为showMethods("coerce")

例如使用演示数据

from="SingleCellExperiment", to="SingleCellAssay"

产量错误:

library(celaref)              # my package, uses MAST internally
library(SingleCellExperiment) # a dependancy
# library(MAST)               # Uncomment this and it works
contrast_each_group_to_the_rest(demo_ref_se, num_cores=1)

谢谢。

1 个答案:

答案 0 :(得分:1)

如Neal Fultz所建议的:

  

您可以尝试添加importFrom(“ methods” as)-github.com/cran/Matrix   / blob / master / NAMESPACE#L24这使我认为MAST可能需要添加   到他们的NAMESPACE。

这有效:

#' @importFrom "methods" as在函数头

importFrom("methods",as)在NAMESPACE中

更正-实际上,这似乎不像我想的那样有效。感谢其他提示。

修正-在函数标头(哎呀)中导入MAST,并使用我不太了解的看起来很奇怪的“ as”格式。 (可能取决于这些程序包中的实际(非常相似)数据对象)

#' @import SummarizedExperiment
#' @import MAST
sca <- new("SingleCellAssay")
as(sca, "SingleCellExperiment") <- sce.in