dispiace, ma non capisco il motivo per cui troppe persone ancora pensare che una stringa fosse qualcosa che poteva essere valutata. Devi cambiare la tua mentalità, davvero. Dimentica tutte le connessioni tra stringhe su un lato e le espressioni, le chiamate, la valutazione sull'altro lato.
La (possibilmente) unica connessione è via parse(text = ....)
e tutti i buoni programmatori R dovrebbero sapere che questo è raramente un mezzo efficiente o sicuro per costruire espressioni (o chiamate). Piuttosto saperne di più su substitute()
, quote()
, e forse il potere di usare do.call(substitute, ......)
R> fortune :: fortuna ("risposta è parse")
Se la risposta è parse() di solito si dovrebbe ripensare il domanda. - Thomas Lumley R-aiuto (febbraio 2005)
R>
dicembre2017: Ok, ecco un esempio (nei commenti, non c'è bella formattazione):
R> Q5 < - citazione (5 + 5)
R> str (Q5)
lingua 5 + 5
R> E5 < - espressione (5 + 5)
R> str (e5)
espressione (5 + 5)
e se si ottiene più esperti imparerete che q5
è un "call"
dove come e5
è un "expression"
, e anche che e5 [[1]] è identico a Q5:
R> identici (Q5, e5 [[1]])
[1] TRUE
fonte
2016-10-20 20:38:47
Nonostante tutte le risposte che mostrano come risolverlo con parse ... Perché è necessario memorizzare i tipi di lingua in un carattere 'stringa'? La risposta di Martin Mächler dovrebbe meritare molti più voti. –
Grazie @PetrMatousu. Sì, sono scioccato nel vedere come le informazioni errate siano diffuse su SO ora .. da persone che invitano a "eval (parse (text = *))" soluzioni false. –