R 如何在函数结束时向用户显示消息';什么是返回输出?
我正在创建一个函数,用于导入R 如何在函数结束时向用户显示消息';什么是返回输出?,r,R,我正在创建一个函数,用于导入.txt文件并返回data.frame。有时,我希望向用户显示一条消息,以便与数据一起使用。我的问题是,通过将消息包含在函数体中,它会显示在数据之前,并且在一个包含许多行的大型data.frame中,用户可能永远看不到它 例如,假设: foo=function(cars){ message('Pay attention to me!') return(cars) } 如果用户输入: foo(cars) 该函数将显示我的消息,但仅显示在返回的对象之前(在本例
.txt
文件并返回data.frame
。有时,我希望向用户显示一条消息,以便与数据一起使用。我的问题是,通过将消息包含在函数体中,它会显示在数据之前,并且在一个包含许多行的大型data.frame
中,用户可能永远看不到它
例如,假设:
foo=function(cars){
message('Pay attention to me!')
return(cars)
}
如果用户输入:
foo(cars)
该函数将显示我的消息,但仅显示在返回的对象之前(在本例中,是R的基本包中的cars
。如何在返回的数据框的底部显示我的消息()
内容
我也尝试过回复邮件,但没有效果:
foo=function(cars){
return(cars,message('help!'))
}
我注意到warning()
和stop()
函数都在data.frame
的末尾显示它们的文本,但我希望显示的消息既不是警告也不是错误,只是供参考
为了澄清,理想情况下,调用函数时会显示消息(无论输出是否分配给变量名),但不会在每次使用结果对象时显示消息。foo(cars)
应该显示消息,正如obj=foo(cars)应该显示消息一样
。但obj
不应该。由于Andrie对的回答不太适用于数据帧(它返回了一个空帧),因此我对该回答中的print.bar()
做了一个小调整,该答案似乎适用于数据帧(至少到目前为止)
因此,在控制台中调用时,foo()
将打印消息。当分配obj
时,在随后打印obj
时,消息将不会打印。这不是一个直接的答案,但我认为,如果用户看到消息如此重要,也许一个警告毕竟是合适的。或者,您可以暂停显示,给用户一个提示要在固定时间内阅读信息,请执行以下操作:
foo=function(cars){
message("pay attention to me!")
Sys.sleep(2)
return(cars)
}
或直到用户确认:
foo=function(cars){
x <- readline("pay attention to me!\n(press enter to continue)")
return(cars)
}
foo=功能(汽车){
x非常类似于。看一看。这就是你想要做的吗?我上一篇评论的链接帖子中的答案似乎对数据帧不起作用。但是,如果你删除类(x),如果你不想弄乱类和方法(并返回“纯”data.frame),你可以返回不可见(cars)
。返回值将永远不会被打印。您可以在消息之前调用print(cars)
,但是,即使您将返回值指定给对象,函数也会打印。这很有帮助,但行为与理想情况下我希望的略有不同。理想情况下,调用函数时会显示消息(不管输出是否分配给变量名)并且没有其他时间。在这个答案中,如果obj=foo(cars)
,那么我在运行此代码时看不到消息,但我在输入obj
时确实看到消息。好的,我会看看是否可以解决问题。您可以执行print(obj,FALSE)
如果您愿意,但您可能不想呼叫print
foo=function(cars){
message("pay attention to me!")
Sys.sleep(2)
return(cars)
}
foo=function(cars){
x <- readline("pay attention to me!\n(press enter to continue)")
return(cars)
}