Извините, но я не понимаю, почему слишком много людей, даже подумайте, что строка может быть оценена. На самом деле вы должны изменить свое мышление. Забудьте обо всех связях между строками на одной стороне и выражениях, вызовах, оценке на другой стороне.
Подключение (возможно) только через parse(text = ....)
, и все хорошие программисты R должны знать, что это редко является эффективным или безопасным средством для создания выражений (или вызовов). Скорее узнать больше о substitute()
, quote()
, и, возможно, власть использования do.call(substitute, ......)
R> фортуну :: состояние («ответ разобрать»)
Если ответ синтаксического анализа() вы должны, как правило, переосмыслить вопрос. - Томас Ламли R-помощь (февраль 2005)
R>
декабря2017: Хорошо, вот пример (в комментариях, нет хорошего форматирования):
R> q5 < - цитата (5 + 5)
R> ул (q5)
языка 5 +-
R> e5 < - выражение (5 + 5)
R> ул (e5)
выражение (5 + 5)
и если вы получите больше опыта вы узнаете, чтоявляется "call"
где, как e5
является "expression"
, и даже, что е5 [[1]] идентична q5:
R> идентичным (q5, e5 [[1]])
[1] ИСТИНА
Несмотря на все ответы, показывающие, как решить это с помощью синтаксического анализа ... Почему вам нужно хранить типы языков в символьной строке? Ответ Мартина Махлера должен заслуживать гораздо большего внимания. –
Спасибо @PetrMatousu. Да, я в шоке от того, как сейчас происходит распространение неверной информации на SO .. людьми, которые выказывают 'eval (parse (text = *))' поддельные решения. –