Как R (RGui) анализирует многострочные символьные строки? - PullRequest
1 голос
/ 04 октября 2019

RGui (Windows; R версия 3.5.3), кажется, игнорирует символы табуляции, которые появляются в начале строки в строке символов (нажмите CTRL + R надстроки кода):

# REPLACE "<TAB>" WITH AN ACTUAL TAB CHARACTER TO GET THE CODE INTENDED BELOW.
foo <- 'LINE1
<TAB>LINE2
<TAB>LINE3
'

foo

# [1] "LINE1\nLINE2\nLINE3\n"

longstring <- removetabsatbeginningoflines('
<TAB>Sometimes I have really long strings that I format
<TAB>so that they read nicely (not with too long of a
<TAB>line length). Tabs at the beginning of the lines
<TAB>within a string preserve my code indenting scheme
<TAB>that I use to make the code more readable. If the
<TAB>tabs are not removed automatically by the parser,
<TAB>then I need to wrap the string in a function that
<TAB>removes them.')

Символы табуляции сохраняются, когда код выше source 'd из файла.

  1. Почему RGui не сохраняет вкладкусимволы?
  2. Где задокументировано это поведение?
  3. Какие другие неинтуитивные, связанные поведения RGui имеет в отношении анализа (многострочных) строк?

1 Ответ

0 голосов
/ 04 октября 2019

Я нигде не могу найти, что это задокументировано, поэтому стоит публично ответить на этот вопрос.

Если вы используете встроенный в RGui 'R Editor', то все символы табуляции, введенные черезКлавиша Tab или уже существующая в текстовом файле, который вы открыли в «Редакторе R», будет не при отправке с использованием Ctrl - R (Это трудно представить здесь в примере, учитывая, что вкладки лишены ответов).

Я полагаю, что «Редактор R» не предназначен для серьезного редактирования кода, и выможет быть лучше использовать выделенную IDE (например, RStudio) или более полнофункциональный редактор (например, Emacs, Notepad ++).

Вы можете обойти эту проблему в RGui, вручную заменяя вкладки на \t при редактировании вRGui, но это может быть неуместно, если вы хотите сохранить фактические вкладки в вашем файле. Вкладки также будут правильно обрабатываться при использовании source() для непосредственного запуска кода, хранящегося в текстовом файле.

...