2014-08-01 6 views
5

In statistica R-, supponiamo di avereCome scrivere equazione matematica in R con costanti provenienti da variabili?

a <- 5 

b <- 3 

Ora voglio scrivere un'equazione matematica utilizzando la funzione di espressione, come di seguito

exp <- expression(a * e^(b * x)) 

Ma voglio i valori di A e B nell'equazione invece delle lettere,

ie Voglio che mostri 5 e^3x.

Come faccio?

La ragione è che non saprei i valori A e B in anticipo e questi provengono dal raccordo una curva esponenziale, quindi non posso usare expression(5 * e^(3 * x)).

+0

Cosa stai cercando di fare? Basta valutare l'espressione con valori diversi di 'x' o si desidera tracciare la funzione o ...? – Thomas

+0

vedi '? Plotmath' - ma non è facile da leggere, le risposte qui sono probabilmente più utili –

risposta

4

Prova questa:

subst <- function(e, ...) do.call(substitute, list(e[[1]], list(...))) 
exp <- expression(a * e^(b * x)) 
subst(exp, a = 1, b = 5) 
## 1 * e^(5 * x) 

notare che, mentre potrebbe sembrare che le più semplici

substitute(expression(a * e^(b * x)), list(a = 1, b = 5)) 

opere, non è possibile sostituire semplicemente expression(a * e^(b * x)) con una variabile in modo che funziona solo se l'applicazione consente di codificare l'espressione.

3

È possibile utilizzare il comando substitute

a <- 5 
b <- 3 
substitute(expression(a * e^(b * x)), list(a=a, b=b)) 
# expression(5 * e^(3 * x)) 

o semplicemente

substitute(a * e^(b * x), list(a=a, b=b)) 
# 5 * e^(3 * x) 
2

bquote potrebbe essere utile per voi. Ecco un esempio,

> a <- 5; b <- 3 
> bquote(.(a) * e^(.(b) * x)) 
# 5 * e^(3 * x) 
> a <- 10; b <- 6 
> bquote(.(a) * e^(.(b) * x)) 
# 10 * e^(6 * x) 

I termini avvolto in .() vengono valutati in un ambiente specifico. Il risultato è un'espressione non valutata con le variabili spostate .() sostituite con i valori assegnati.

Problemi correlati