2014-10-12 17 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