Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

R - new line in paste() function [duplicate]

How can we insert a new line when using the function paste() or any function that concatenates strings in R?

There are many web pages on this topic but none answers clearly or gives a solution that works. I precise I don't want to use the function cat, I need to work with string of characters. Here are all my attempts (derived from all the suggestions on from different forum), they all fail...

1st Try: paste()

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

Output:

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

2nd Try: paste0()

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

Output:

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

3rd Try: sep

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

Output:

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

4th Try: sprintf

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

Output:

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

I believe I've tried everything I could... If you have an idea?!

like image 697
Rio Avatar asked Sep 24 '14 16:09

Rio


1 Answers

You could try strsplit

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

This can also be used with noquote if you don't want quotes.

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

This produces virtually the same result as if you were to use print with quote = FALSE

You can also define your own print method

print.myClass <- function(x, ...)  strsplit(x, "\n")[[1]]
class(msg2) <- "myClass"
print(msg2)
# [1] "=================================================="
# [2] " Var:"     
like image 66
Rich Scriven Avatar answered Oct 17 '22 07:10

Rich Scriven