To start off, I\'m not really sure what the difference between paste and print is. But I am using \"print\" to spit out generic statements and \"paste\" to spit out statemen
paste returns the input concatenated together. When a function returns it calls print on whatever was returned if it isn't stored into a variable. Functions return the last top level call if there is no explicit 'return' or 'invisible' statement.
All of these things add up to what you end up seeing. If paste is the last function called it ends up returning the input concatenated together - which ends up being returned by the function - which ends up being printed since you don't save it into a variable. If you explicitly want something printed it is best to use print or message or cat - they each serve slightly different purposes.
paste concatenates (pastes) strings and returns a character vector, so you can do thing like
paste('a','b', sep = '-')
## [1] "a-b"
print prints values. From ?print
invisible(x)). It is a generic function which means that new printing methods can be easily added for new classes.
Most classes will have a defined print method (or will use print.default)
You can see the available print methods by typing
methods('print')
In your case
paste("TS= ", TS, sep=" ") returns a character vector, so when this is the result of the function, print.character is used to display the results
In fact, I think you want message not print or print.noquote.
T <- function() {
if (exists("TS"))
{
message(paste("TS= ", TS, sep=" "))
} else if (!exists("TS")) {
message("No TS Values")
}
message("my exsistance removes paste output")
}