2015-12-21 13 views
5

Bene, ecco quello che faccio:differenza R tra espressione e as.expression

D(expression(x^2),"x") 
# 2 * x 
D(as.expression(x^2),"x") 
# [1] 0 
class(as.expression(x^2)) 
# [1] "expression" 
class(expression(x^2)) 
# [1] "expression" 

Quindi, perché il diverso risultato? Immagino che R gestisca queste cose in modo leggermente diverso, e voglio capire come esattamente. Un manuale su R in cui sono coperte tali sfumature, se ne conosci uno, è anche molto gradito.

+0

Viene visualizzato un errore con 'D (come.espressione (x^2)," x ")'. Hai definito qualche 'x' nel tuo spazio di lavoro? –

+0

E suggerirei di leggere l'aiuto, se non già fatto. –

+0

Sì, x era nell'ambiente globale, mi dispiace. 'x = 2' restituisce '[1] 0'. Ho letto l'aiuto per D(), ho controllato '? As.expression' e dice che funziona come 'as.vector (type = expression)' di default che è probabilmente la causa della differenza di comportamento, ma io non capisco i meccanismi sottostanti e io voglio. Ho sentito che l'aiuto in R è un riferimento per coloro che comprendono piuttosto che guidare coloro che apprendono (e probabilmente dovrebbe essere), ecco perché cercare un buon manuale. – ephemeris

risposta

3

Se è stato definito come il numero x nel contesto globale, quando si utilizza la funzione as.expression(x^2) cercherà di convertire il contenuto di x e non il suo nome ad un'espressione.

See:

x = 1 
as.expression(x^2) 
# expression(1) 

Quindi, quando si esegue D(as.expression(x^2), "x") si sono effettivamente in esecuzione D(expression(1), "x") che è pari a zero.

Problemi correlati