我试图使用R自动生成一个makefile,并遇到了一个非常奇怪的问题。
使用以下代码生成makefile:
v <- "histogram.tsv: histogram.r\r\tRscript histogram.r"
fileConn <- file("Makefile")
writeLines(v, fileConn)
close(fileConn)
这会生成以下Makefile
histogram.tsv: histogram.r
Rscript histogram.r
这个Makefile没有构建,但是当我在&#34; Rscript&#34;之前手动输入Tab时它呢!当我将write.lines生成的文本与手工生成的文本进行比较时,identical()
会返回TRUE
。
答案 0 :(得分:3)
我在Linux Mint上测试时工作正常。当涉及通常在Windows中使用的回车字符时,您的发行版可能不会宽容。您可以尝试删除回车字符或使用 dos2unix :
在DOS / Windows文本文件中,换行符也称为换行符 两个字符的组合:回车符(CR)后跟a 换行(LF)。在Unix文本文件中,换行符是单个字符: 换行(LF)。在Mac文本文件中,在Mac OS X之前,换行符 是单一回车(CR)字符。如今Mac OS使用Unix 风格(LF)换行。
sudo apt-get install dos2unix
dos2unix Makefile
在您的情况下,您还需要插入换行符,因此请按以下方式设置v
:
v <- "histogram.tsv: histogram.r\n\tRscript histogram.r"
您可以尝试编写makefile的方法,以避免出现此类问题:
target: dependencies; \
command1; \
command2