2016-11-26 70 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))); 
}