Ich bin ein neues R-Paket zu schreiben und feststellen, dass Variablen, die ich nicht explizit auf eine Funktion im Paket übergeben (als Eingabeargument) ist in ihn, zum Beispiel:R-Paket kann Variablen sehen nicht an sie übergaben
myFunc <- function(a,b,c) {
print(d)
}
wo d
ist in der aufrufenden .R
Skript, aber nicht an myFunc
übergeben wurde, ist sichtbar.
Jede Hilfe wäre toll, danke; Ich verwende R 3.2.4 und habe roxygen2
(über devtools::document()
) verwendet, um das NAMESPACE
zu erstellen, wenn das hilft.
Tritt dieses Verhalten nach der Installation des Pakets oder nur während des Entwicklungs-/Testprozesses auf? – nrussell
Ich sehe es nach der Installation des Pakets, d. H. Nach dem Ausführen von 'R CMD INSTALL myPackage' und dann mit einem .R-Skript außerhalb des Pakets Aufruf' myFunc() '. –
Dies liegt an den Scoping-Regeln von R. Es gibt ein neues Paket "Module" auf CRAN, das hilft, dieses häufige Problem zu lösen. Weitere Details finden Sie in meiner Antwort auf http://stackoverflow.com/questions/6216968/r-force-local-scope?lq=1 – Uwe