将 R 脚本从 DOS 行结尾转换为 Unix

Jau*_*tis 6 r batch-file line-breaks

我正在尝试在 unix 服务器上运行我在 Rstudio 中编写的脚本(在下面输入命令)。当我运行该命令时,它返回以下错误消息:

sbatch -N 1 --mem=10000 -p all ./myscript.R
Run Code Online (Sandbox Code Playgroud)

sbatch:错误:批处理脚本包含 DOS 换行符 (\r\n),而不是预期的 UNIX 换行符 (\n)

我该如何解决这个错误?我已经必须输入“#!/usr/bin/env Rscript #SBATCH --get-user-env”才能让 ssh 服务器意识到它是一个 R 脚本。

谢谢你!

G5W*_*G5W 1

评论中提出的解决方案使用了外部程序(dos2unix 或编辑器)。这是在 R 中进行更改的一种方法。您可以读取包含脚本的文件并使用 Unix 风格的换行符将其写回。帮助页面?file指定打开连接使用open="wb"指定以“二进制模式”写入。这将使 \n 写为 \n,而不是 \r\n。

Text = paste(readLines("Script.R"), collapse="\n")
conx = file("Script.UnixNL.R", open="wb")
write(Text, conx)
close(conx)
Run Code Online (Sandbox Code Playgroud)