2016-11-26 4 views
1

Existe-t-il une alternative pour inspecter la fonction pour récupérer l'adresse ou le hachage d'une variable dans R qui serait compatible avec la licence MIT?R hash ou ID unique de la variable

Aujourd'hui, j'utilise:

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

pour obtenir l'adresse d'une variable (soit l'environnement ou vecteur) qui identifie son unique.

Je voudrais publier ma bibliothèque sur CRAN et malheureusement ma solution n'est pas recommandée. Exécution de la vérification:

Vérification du code R pour les problèmes possibles ... AVERTISSEMENT

Trouvé un appel .Internal dans la fonction suivante:

'id'

avec des appels à des fonctions .Internal

'inspecter'

+1

'pryr :: inspecter (mtcars) $ pryr que – hrbrmstr

+1

'Adresse que je vois est GPL-2 donc je ne pouvais pas utiliser ma bibliothèque qui est MIT –

+1

@hrbrmstr est 'pryr :: address (mtcars)' pareil et mieux? – Spacedman

Répondre

0

A la fin, j'ai utilisé une mise en œuvre à faible niveau 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))); 
}