1
。我传递的一些对象具有附加到它们的自定义属性,我想从C访问这些属性,而不必将它们作为单独的参数传递给.Call
函数。使用.Call时获取R SEXP对象上的自定义属性使用R的.Call接口从R调用R函数调用C函数
例如,考虑实数的简单情况下使用自定义字符串属性:
x <- 1
attr(x, "myname") <- "Abiel"
一种方式在“MYNAME”属性从内C函数是把它作为一个独立的获得参数:
.Call("test", x, as.character(attr(x, "myname")))
但是,我宁愿只是做
.Call("test", x)
,然后恢复C函数中的“myname”属性。我一直无法弄清楚如何用getAttrib()
函数来做到这一点;例如,下面这个函数的主线将计算为true,表示一个空值。
SEXP test(SEXP x)
{
isNull(getAttrib(x, mkChar("myname")));
}
扫描将R写入扩展手动并没有帮助我很多,为getAttrib()
所有的例子包括预定义的符号,如。 This section描述了如何将自定义属性附加到您在C中创建的SEXP对象,但不知道如何获得与传递到C函数中的对象关联的自定义属性。
谢谢约书亚。我能够得到这个工作使用getAttrib(x,安装(“myname”)) – Abiel