我正在写一个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)
谢谢。
答案 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