Il problema è che si sta assegnando la nuova versione di layout
alla grafica namespace, che è ciò che viene restituito da environment(graphics:::layout)
. Si invece di si desidera eseguire l'assegnazione nel pacchetto della grafica allegata (ovvero l'ambiente che appare come "package:graphics"
nel percorso di ricerca).
Nel tuo esempio, quando alla ricerca di layout
, R ricerche verso il basso l'elenco dei pacchetti collegati restituiti da search()
, e trova l'originale layout
in package:graphics
, prima si arriva mai a funzionare avere assegnato in namespace:graphics
.
La soluzione è semplice, richiede solo un cambiamento di ambiente assegnato env
nella prima riga:
# Assign into <environment: package:graphics>
# rather than <environment: namespace:graphics>
env <- as.environment("package:graphics")
unlockBinding("layout" , env = env)
assign("layout" , function(){} , envir = env)
lockBinding("layout" , env = env)
# Now it works as expected
layout
# function(){}
Un po 'più elaborazione, che può essere utile per alcuni:
search() # Shows the path along which symbols typed at the command
# will be searched for. The one named "package:graphics"
# is where 'layout' will be found.
# None of these return the environment corresponding to "package graphics"
environment(layout)
environment(graphics::layout)
environment(graphics:::layout)
# This does
as.environment("package:graphics")
fonte
2011-12-28 22:09:05
tutti - mi scuso per tutte le domande relative agli ambienti ultimamente. Questo sta dimostrando di essere un argomento complicato e confuso. Se ci sono materiali di lettura consigliati (diversi dai PDF R standard che non sono molto utili), per favore fatemelo sapere! – SFun28
Non chiedere scusa; Ho imparato molto da loro me stesso. Non ce l'ho nemmeno io, ma ho sentito che le [Chambers] (http://www.amazon.com/Software-Data-Analysis-Programming-Statistics/dp/1441926127/ref=sr_1_9?s=books&ie = UTF8 & qid = 1325110851 & sr = 1-9) book è una sorta di bibbia di programmazione R (al contrario di calcolo statistico). – joran
In realtà ho appena ordinato quel libro un'ora fa. =) non vedo l'ora di abbassarlo. Grazie per le parole di incoraggiamento, joran! – SFun28