使用 writeLines 时避免在文件末尾出现空行
Avoid blank line at end of file when using writeLines
在 R 中:是否可以避免在 writeLines 生成的文本文件末尾有一个空行?如果没有,是否有任何其他方法可以从 R 中生成文本文件而末尾没有空行?
没有空行
R(正确地)以 '\n'
(或 Windows 上的 '\r\n'
)结束每一行。换句话说,该文件由行组成,每行以换行符结束。
不幸的是,有许多工具(尤其是 Windows 上的)无法正确处理此类文件并在末尾显示额外的一行。然而,这是这些工具的错误,而不是 R 的错误。因此,这不应该在 R 代码中修复。
作为安抚错误工具的 hack,唯一的办法是将 writeLines
的 sep
参数设置为空字符串 ''
,并插入换行符 between 行手动(使用 paste
)。
我有完全相同的担忧(虽然不同的网格),甚至你对接受答案的评论(康拉德)对我也不起作用。
我找到了答案here,这里是完整代码:
fileConn = file("mytext.txt")
writeLines(c("line1", "line2", "line3"), sep="\n", fileConn)
#now connect to UNIX server and upload your file
library(ssh)
session=ssh_connect("user@server.com")
scp_upload(session, files="mytext.txt")
#Here is the trick, convert all the Windows extra chars to unix
ssh_exec_wait(session, command="dos2unix mytext.txt")
#Then start your Grid job
ssh_exec_wait(session, command="sbatch mytext.txt")
ssh_disconnect(session)
在 R 中:是否可以避免在 writeLines 生成的文本文件末尾有一个空行?如果没有,是否有任何其他方法可以从 R 中生成文本文件而末尾没有空行?
没有空行
R(正确地)以 '\n'
(或 Windows 上的 '\r\n'
)结束每一行。换句话说,该文件由行组成,每行以换行符结束。
不幸的是,有许多工具(尤其是 Windows 上的)无法正确处理此类文件并在末尾显示额外的一行。然而,这是这些工具的错误,而不是 R 的错误。因此,这不应该在 R 代码中修复。
作为安抚错误工具的 hack,唯一的办法是将 writeLines
的 sep
参数设置为空字符串 ''
,并插入换行符 between 行手动(使用 paste
)。
我有完全相同的担忧(虽然不同的网格),甚至你对接受答案的评论(康拉德)对我也不起作用。
我找到了答案here,这里是完整代码:
fileConn = file("mytext.txt")
writeLines(c("line1", "line2", "line3"), sep="\n", fileConn)
#now connect to UNIX server and upload your file
library(ssh)
session=ssh_connect("user@server.com")
scp_upload(session, files="mytext.txt")
#Here is the trick, convert all the Windows extra chars to unix
ssh_exec_wait(session, command="dos2unix mytext.txt")
#Then start your Grid job
ssh_exec_wait(session, command="sbatch mytext.txt")
ssh_disconnect(session)