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)
}