2016-11-26 44 views
1

是否有替代方法检查函数以检索R中的变量的地址或哈希值,该变量与MIT许可证兼容?R散列或变量的唯一ID

今天我用:

id = function(x) { 
    txt <- capture.output(.Internal(inspect(x, 1)))[[1]] 
    return(regmatches(txt,regexpr("@[^ ]+",txt))) 
} 

得到任何变量(环境或载体)识别其唯一的地址。

我想将我的图书馆发布到CRAN,不幸的是我的解决方案不是我们推荐的方式。运行Check:

检查可能存在的问题R代码里面......警告

发现在下面的函数调用。内部:

“身份证”

与调用。内部功能

'检查'

+1

'pryr ::检查(mtcars)$ address' – hrbrmstr

+1

pryr,因为我看到的是GPL-2,所以我不能用它在我的库,麻省理工学院 –

+1

@hrbrmstr是'pryr :: address(mtcars)'同样更好吗? – Spacedman

回答

0

最后,我用了一个低级别的C实现:

#include <R.h> 
#include <Rinternals.h> 
#include <Rdefines.h> 

SEXP id(SEXP x) 
{ 
    char buffer[32]; 
    snprintf(buffer, 32, "%p", (void *)x); 
    return(ScalarString(mkChar(buffer))); 
}