Difference between paste and print (affecting result of function)

前端 未结 2 397
离开以前
离开以前 2020-12-19 14:10

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

相关标签:
2条回答
  • 2020-12-19 14:53

    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.

    0 讨论(0)
  • 2020-12-19 15:01

    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

    print prints its argument and returns it invisibly (via 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") 
    }
    
    0 讨论(0)
提交回复
热议问题