R - paste()函数中的换行符问题

15
如何在使用函数paste() 或任何连接字符串的 R 函数中插入新行?有许多网页涉及此主题,但没有一个清楚地回答或提供有效的解决方案。我的要求是不使用cat函数,而是需要处理字符串。以下是我尝试的所有方法(来自不同论坛上的建议),它们都失败了...

第一次尝试: paste()

msg <- "==================================================\n"
msg <- paste(msg, "Var:")
print(msg)

输出:

[1] "==================================================\n Var:"

第二次尝试:paste0()

msg <- "==================================================\n"
msg <- paste0(msg, "Var:")
print(msg)

输出:

[1] "==================================================\nVar:"

第三次尝试:sep

msg <- "=================================================="
msg <- paste(msg, "Var:", sep = "\n")
print(msg)

输出:

[1] "==================================================\nVar:"

第4次尝试:sprintf

msg <- sprintf("==================================================\n")
msg <- paste(msg, "Var:")
print(msg)

输出:

[1] "==================================================\nVar:"

我相信我已经尝试了所有可能的方法... 如果你有什么想法?!


5
你在那里唯一没有展示的就是你实际想要的输出结果。尝试使用 cat 命令。 - Rich Scriven
1
你说“我不想使用 cat。”为什么?它需要一个字符串... - Gregor Thomas
1个回答

13
你可以尝试使用 strsplit
msg <- "==================================================\n"
msg2 <- paste(msg, "Var:")
strsplit(msg2, "\n")[[1]]
# [1] "=================================================="
# [2] " Var:" 

如果您不想使用引号,也可以与noquote一起使用。

noquote(strsplit(msg2, "\n")[[1]])
# [1] ==================================================
# [2]  Var: 

这将产生几乎与使用print quote = FALSE 相同的结果。

您还可以定义自己的打印方法。

print.myClass <- function(x, ...)  strsplit(x, "\n")[[1]]
class(msg2) <- "myClass"
print(msg2)
# [1] "=================================================="
# [2] " Var:"     

感谢@RichardScriven,但这并不是我想要的。 - Rio
2
你想要什么? - Rich Scriven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接