首先,我不太确定粘贴和打印之间的区别是什么。但是我使用“打印”吐出通用语句,使用“粘贴”吐出使用/引用特定变量的语句。
我的问题是,在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之类的东西?
paste 连接(粘贴)字符串并返回字符向量,因此您可以执行以下操作
paste('a','b', sep = '-')
## [1] "a-b"
Run Code Online (Sandbox Code Playgroud)
print打印值。从?print
invisible(x))返回。这是一个通用功能,这意味着可以轻松为新类别添加新的打印方法。
大多数类将具有定义的打印方法(或将使用print.default)
您可以通过键入以下内容查看可用的打印方法
methods('print')
Run Code Online (Sandbox Code Playgroud)
在您的情况下
paste("TS= ", TS, sep=" ")返回一个字符向量,因此当这是函数的结果时,print.character将用于显示结果
实际上,我认为您message不想要print或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")
}
Run Code Online (Sandbox Code Playgroud)