1

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从文件中提取时,制表符将被保留。

  1. 为什么 RGui 不保留制表符?
  2. 这种行为记录在哪里?
  3. RGui 在解析(多行)字符串方面还有哪些其他非直观的相关行为?
4

1 回答 1

0

我找不到任何记录在案的地方,所以这是一个值得公开回答的问题。

如果您使用的是 RGui 的内置“R 编辑器”,那么通过该Tab键输入的所有制表符,或者已经存在于您已打开到“R 编辑器”的文本文件中的所有制表符,在使用-提交时都不会受到尊重(此鉴于选项卡已从答案中剥离,因此很难在示例中表示)。CtrlR

我想“R 编辑器”不适合用于严肃的代码编辑,您最好使用专用的 IDE(例如 RStudio)或更全功能的编辑器(例如 Emacs、Notepad++)。

您可以在 RGui 中通过手动替换选项卡来解决此问题,就像\t在 RGui 中编辑时一样,但如果您想在文件中保留实际的选项卡,这可能不合适。source()当用于直接运行存储在文本文件中的代码时,选项卡也将被正确处理。

于 2019-10-03T23:18:24.433 回答