writeLines()未生成有效的生成文件
我试图使用R自动生成一个makefile,但遇到了一个非常奇怪的问题 生成文件时使用以下代码:writeLines()未生成有效的生成文件,r,makefile,gnu-make,R,Makefile,Gnu Make,我试图使用R自动生成一个makefile,但遇到了一个非常奇怪的问题 生成文件时使用以下代码: v <- "histogram.tsv: histogram.r\r\tRscript histogram.r" fileConn <- file("Makefile") writeLines(v, fileConn) close(fileConn) 这个Makefile不会生成,但是当我在“Rscript”之前手动键入选项卡时,它会生成!将write.lines生成的文本与手动生成的
v <- "histogram.tsv: histogram.r\r\tRscript histogram.r"
fileConn <- file("Makefile")
writeLines(v, fileConn)
close(fileConn)
这个Makefile不会生成,但是当我在“Rscript”之前手动键入选项卡时,它会生成!将write.lines生成的文本与手动生成的文本进行比较时,
idential()
返回TRUE
在LinuxMint上测试时,它运行良好。当涉及到回车字符(通常在windows中使用)时,您的发行版很可能无法原谅。您可以尝试删除回车符或使用dos2unix:
在DOS/Windows文本文件中,换行符(也称为换行符)是
两个字符的组合:回车符(CR)后跟
线路馈电(左前)。在Unix文本文件中,换行符是单个字符:
线路馈电(LF)。在Mac文本文件中,在Mac OS X之前,换行符
是单回车(CR)字符。现在Mac OS使用Unix
样式(左)换行符
在本例中,还需要插入换行符,因此设置v
,如下所示:
v <- "histogram.tsv: histogram.r\n\tRscript histogram.r"
顺便问一下,你是说
writeline(v,fileConn)
而不是writeline(make,fileConn)
?这更有道理。哦,我知道,我会等一下,不,我认为代码是正确的。我正在将向量v
写入文件连接Makefile
我更改了它。最初是writeLines(make,fileConn)
。可能是回车在v
中造成了问题。尝试用换行符替换它。
sudo apt-get install dos2unix
dos2unix Makefile
v <- "histogram.tsv: histogram.r\n\tRscript histogram.r"
target: dependencies; \
command1; \
command2