web-dev-qa-db-ja.com

R-paste()関数の新しい行

関数 paste() またはR内の文字列を連結する任意の関数を使用するときに、どのように新しい行を挿入できますか?

このトピックには多くのWebページがありますが、明確に回答したり、機能する解決策を提供したりするものはありません。関数 cat を使いたくないのですが、文字列を処理する必要があります。ここにすべての私の試みがあります(別のフォーラムからのすべての提案から派生)、それらはすべて失敗します...

最初の試行:paste()

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

出力:

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

2回目の試行:paste0()

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

出力:

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

3回目の試行:9月

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

出力:

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

4回目の試行:sprintf

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

出力:

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

私はできる限りのことを試したと思います...アイデアがあれば!?

14
Rio

あなたはstrsplitを試すことができます

msg <- "==================================================\n"
msg2 <- paste(msg, "Var:")
strsplit(msg2, "\n")[[1]]
# [1] "=================================================="
# [2] " Var:" 

引用符が不要な場合は、noquoteと併用することもできます。

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

これは、quote = FALSEprintを使用した場合と実質的に同じ結果になります。

独自の印刷方法を定義することもできます

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