R:使用 cat() 获取类似 Unix 的换行符 LF 写入文件

Posted

技术标签:

【中文标题】R:使用 cat() 获取类似 Unix 的换行符 LF 写入文件【英文标题】:R: Getting Unix-like linebreak LF writing files with cat() 【发布时间】:2015-12-30 15:32:06 【问题描述】:

我尝试在 Windows 7 / R 3.2.2 x64 下将字符向量写入文本文件,并且我想要 unix LF - 而不是 Windows CRLF:

v <- c("a","b","c")
cat(nl,file="textfile.txt",sep="\n")

> a[CRLF] 
> b[CRLF] 
> c[CRLF]

cat(paste(nl,sep="\n",collapse="\n"),file="t2.txt")

> a[CRLF] 
> b[CRLF] 
> c

我也尝试过 write.table(eol="\n") - 不成功,因为它似乎在内部使用 cat。

我已经寻找其他解决方法; 我试图找到某事。在R\src\main\scan.c中,找到相关代码在第387ff行。

任何知道如何在我的输出文件中获得类似 UNIX 的 LF 的人?

【问题讨论】:

【参考方案1】:

尝试以“二进制”模式(而不是“文本”模式)打开文件连接,以防止系统依赖的行尾编码:

v <- c("a","b","c")
f <- file("textfile.txt", open="wb")
cat(v,file=f,sep="\n")
close(f)

【讨论】:

【参考方案2】:

基于@xb 的回答

converter <- function(infile)
    print(infile)
    txt <- readLines(infile)
    f <- file(infile, open="wb")
    cat(txt, file=f, sep="\n")
    close(f)

【讨论】:

以上是关于R:使用 cat() 获取类似 Unix 的换行符 LF 写入文件的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中打印、cat、粘贴,用换行符分隔

Window文本在Linux中出现的^M问题

PHP_EOL

php常量PHP_EOL

php去除换行符的方法小结(PHP_EOL变量的使用)

定期捕获 cat 输出以获取 R 闪亮输出 (renderPrint)