writeLines函数中的奇怪行为

时间:2016-01-19 20:25:10

标签: r

我正在尝试编写源代码,但writeLines函数似乎产生了一个奇怪的输出。

cod <- 'filenam <- list.files(pattern = "\\.txt$")'
writeLines(cod, "source1.R")

当我尝试在bash中执行源时,我收到错误。

Rscript source1.R
  

错误:&#39;。&#39;是字符串开始时无法识别的转义   &#34;&#34;&#34;执行暂停

检查来源我意识到代码丢失了一个\。当list.files(pattern = "\\.txt$")函数导出为文件时,它已从list.files(pattern = "\.txt$")修改为writeLines

知道为什么以及如何处理这个问题?

1 个答案:

答案 0 :(得分:2)

你需要双重逃避:

cod <- 'filenam <- list.files(pattern = "\\\\.txt$")'
writeLines(cod, "source1.R")

生成一个看起来像这样的文件:

filenam <- list.files(pattern = "\\.txt$")

获取该信息,获取正确的行为,因为\\.为了正则表达式而解析为\.

要了解这一点,请查看:

cat("\\.R$")
## \.R$