web-dev-qa-db-fra.com

R - nouvelle ligne dans la fonction paste ()

Comment pouvons-nous insérer une nouvelle ligne lors de l'utilisation de la fonction paste () ou de toute fonction qui concatène des chaînes dans R?

Il existe de nombreuses pages Web sur ce sujet, mais aucune ne répond clairement ou ne donne une solution qui fonctionne. Je précise que je ne veux pas utiliser la fonction cat , je dois travailler avec une chaîne de caractères. Voici toutes mes tentatives (dérivées de toutes les suggestions de différents forums), elles échouent toutes ...

1er essai: coller ()

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

Production:

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

2ème essai: paste0 ()

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

Production:

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

3e essai: sep

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

Production:

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

4ème essai: sprintf

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

Production:

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

Je crois que j'ai essayé tout ce que je pouvais ... Si vous avez une idée?!

14
Rio

Vous pouvez essayer strsplit

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

Cela peut également être utilisé avec noquote si vous ne voulez pas de guillemets.

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

Cela produit pratiquement le même résultat que si vous deviez utiliser print avec quote = FALSE

Vous pouvez également définir votre propre méthode d'impression

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