Es tut mir leid, aber ich verstehe nicht, warum zu viele Leute glauben, eine Zeichenkette sei etwas, das ausgewertet werden kann. Ihr müsst eure Denkweise ändern, wirklich. Vergessen Sie alle Verbindungen zwischen Strings auf der einen Seite und Ausdrücken, Aufrufen und Auswertungen auf der anderen Seite.
Die (möglicherweise) einzige Verbindung erfolgt über parse(text = ....)
und alle guten R-Programmierer sollten wissen, dass dies selten ein effizientes oder sicheres Mittel ist, um Ausdrücke (oder Aufrufe) zu konstruieren. Lernen Sie lieber mehr über substitute()
, quote()
und möglicherweise die Macht der Verwendung von do.call(substitute, ......)
.
fortunes::fortune("answer is parse")
# If the answer is parse() you should usually rethink the question.
# -- Thomas Lumley
# R-help (February 2005)
Dez.2017: Ok, hier ist ein Beispiel (in den Kommentaren, es gibt keine schöne Formatierung):
q5 <- quote(5+5)
str(q5)
# language 5 + 5
e5 <- expression(5+5)
str(e5)
# expression(5 + 5)
und wenn Sie mehr Erfahrung haben, werden Sie lernen, dass q5
ist eine "call"
während e5
ist ein "expression"
und sogar das e5[[1]]
ist identisch mit q5
:
identical(q5, e5[[1]])
# [1] TRUE