我正在尝试在R中打印多行消息。例如,
print("File not supplied.\nUsage: ./program F=filename",quote=0)
我得到了输出
File not supplied.\nUsage: ./program F=filename
而不是所需的
File not supplied.
Usage: ./program F=filename
答案 0 :(得分:113)
cat()
的替代方案是writeLines()
:
> writeLines("File not supplied.\nUsage: ./program F=filename")
File not supplied.
Usage: ./program F=filename
>
一个优点是,您不必记住在传递给"\n"
的字符串后附加cat()
以获取邮件后的换行符。例如。将上述内容与同一cat()
输出进行比较:
> cat("File not supplied.\nUsage: ./program F=filename")
File not supplied.
Usage: ./program F=filename>
和
> cat("File not supplied.\nUsage: ./program F=filename","\n")
File not supplied.
Usage: ./program F=filename
>
print()
无法执行您想要的操作的原因是print()
向您显示R级别的对象版本 - 在这种情况下,它是一个字符串。您需要使用其他函数,如cat()
和writeLines()
来显示字符串。我说“版本”是因为印刷数字的精度可能会降低,例如,印刷对象可能会增加额外的信息。
答案 1 :(得分:18)
你可以这样做:
cat("File not supplied.\nUsage: ./program F=filename\n")
请注意,cat
的{{1}}值为return
。
答案 2 :(得分:5)
使用writeLines还可以使用<img src="{{ asset('bundles/dist/img/'~ app.user.username ~'.jpg') }}" alt="User Image" class="img-circle" />
免除“\ n”换行符。如:
c()
如果您计划编写带有固定和可变输入组合的多行消息,例如上面的[第三行附加文本],这将非常有用。
答案 3 :(得分:-1)
您还可以结合使用cat
和paste0
cat(paste0("File not supplied.\n", "Usage: ./program F=filename"))
当将变量合并到打印输出中时,我发现这会更有用。例如:
file <- "myfile.txt"
cat(paste0("File not supplied.\n", "Usage: ./program F=", file))