2014-10-12 77 views
0

我希望这不是一个双重职位。我一直在寻找答案。调用模型时打印文本

我有一个函数返回一个相当大的列表。所以我希望它在列表的所有结果之间打印一些文本。有点像从lm和其他型号中知道的那样。

考虑该R脚本

y<-function(z) 
{ 
l<-list() 
print("hello world") 
l$answer<-2*z 
return(l) 
} 
x<-y(5) 

这是一个小例子。我尝试了一个打印解决方案,但这是一个不好的解决方案,仅仅因为它在我将变量保存为x < -fun(5)时执行打印。我只是希望它在你明确提出要求时执行文本,或者如果你可以将自己的“摘要”命令构建到列表中,甚至更好。

谢谢你的时间。

+0

下面的答案是我首先想到的,但另一种方法是为'y'添加'print = FALSE'参数,在print语句上方添加if(print)',并且只在您想要时设置为TRUE – rawr 2014-10-12 14:26:45

回答

2

如果我明白你想要做什么,我认为你正在寻找实施S3方法print

  1. 设置类属性:在Y函数的返回值 “SomeClass的”
  2. 定义print.someclass

这里的代码:

y<-function(z) 
{ 
    l<-list() 
    l$answer<-2*z 
    ## Roland comment : usually better to preserve existing classes: 
    class(l) <- c('someclass', class(l)) 
    return(l) 
} 

print.someclass<- 
    function(x,...){ ## add here what you want to print 
       print("hello world") 
} 

x<-y(5) 

现在,当您在控制台输入x或print(x):

x 
[1] "hello world" 
+0

我知道你已经意识到了这一点,但我想指出的是保留现有类通常更好:class(l)< - c('someclass',class(l))' – Roland 2014-10-12 14:32:19

+0

@Roland yes课程。 thanks.fixed。 (下次请随时编辑我的答案,如果你当然想) – agstudy 2014-10-12 15:01:40

+0

正是我在找什么。谢谢。 – Conformal 2014-10-14 13:55:38