r语言 - 自定义类的 Rcpp 覆盖摘要方法



假设我有以下函数:

List foo(List x) 
{
x.attr("class") = "myOwnClass";
return(x);
}

我想覆盖foo函数输出的 R摘要方法。但是,以下 R 样式方法不起作用:

List summary.myOwnClass(List x) 
{
return(x)
}

在编译过程中,我有一个错误,说"预期的初始值设定项在'.'令牌之前"。

请帮助我了解如何在Rcpp框架中为我的自定义类实现摘要函数覆盖

将非常乐意寻求帮助!

我觉得这可能是一个重复的,但我最初的搜索没有拉出一个。我现在添加一个快速答案,但如果我以后找到一个,我会删除这个答案并提出一个重复的答案。

解决此问题的方法是使用export标记将函数的 R 端名指定为summary.myOwnClass,同时使用其他内容作为C++端名;C++函数名称中间不能有点(例如,想想如何调用成员函数 - 这将是行不通的)。因此,我们执行以下操作

#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
List foo(List x)
{
x.attr("class") = "myOwnClass";
return(x);
}
// [[Rcpp::export(summary.myOwnClass)]]
List summary(List x)
{
return(x);
}
/*** R
l <- foo(1:3)
summary(l)
*/

然后我们得到我们期望的输出

> l <- foo(1:3)
> summary(l)
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
attr(,"class")
[1] "myOwnClass"

相关内容

  • 没有找到相关文章

最新更新