粘贴和打印之间的差异(影响功能的结果)

Vin*_*woo 4 r

首先,我不太确定粘贴和打印之间的区别是什么。但是我使用“打印”吐出通用语句,使用“粘贴”吐出使用/引用特定变量的语句。

我的问题是,在paste函数中使用时,如果在“ paste”语句后的函数中包含任何内容,则会丢失粘贴的输出。

请查看以下三个功能:

TS<-5
Run Code Online (Sandbox Code Playgroud)

示例1-一切正常

T<-function(){

if(exists("TS"))
{paste("TS= ", TS, sep=" ")}

else

if(!exists("TS"))
{print.noquote("No TS Values")}

}
Run Code Online (Sandbox Code Playgroud)

示例2-我的问题。当我在“ if”语句之后添加任何内容(在本例中为其他打印​​命令)时,我将丢失粘贴的输出

T<-function(){

if(exists("TS"))
{paste("TS= ", TS, sep=" ")}

else

if(!exists("TS"))
{print.noquote("No TS Values")}

print("my exsistance removes paste output") 

}
Run Code Online (Sandbox Code Playgroud)

例3-在“ if”之前放置的相同语句没有负面影响

T<-function(){

print("my exsistance does not remove paste output")

if(exists("TS"))
{paste("TS= ", TS, sep=" ")}

else

if(!exists("TS"))
{print.noquote("No TS Values")}


}
Run Code Online (Sandbox Code Playgroud)

有人可以解释该功能在哪里发生冲突。而且更好的是我该如何解决它,这样我才能paste在函数中有其他操作之后的语句

基本上,我如何才能使示例2正常工作。

布朗尼点-(出于视觉一致性)在使用“ print.noquote”时,是否存在诸如paste.noquote之类的东西?

mne*_*nel 7

paste 连接(粘贴)字符串并返回字符向量,因此您可以执行以下操作

paste('a','b', sep = '-')

## [1] "a-b"
Run Code Online (Sandbox Code Playgroud)

print打印值。从?print

print打印其参数并以可见方式(通过invisible(x))返回。这是一个通用功能,这意味着可以轻松为新类别添加新的打印方法。

大多数类将具有定义的打印方法(或将使用print.default

您可以通过键入以下内容查看可用的打印方法

methods('print')
Run Code Online (Sandbox Code Playgroud)

在您的情况下 paste("TS= ", TS, sep=" ")返回一个字符向量,因此当这是函数的结果时,print.character将用于显示结果

实际上,我认为您message不想要printprint.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") 
}
Run Code Online (Sandbox Code Playgroud)