看板 Statistics 關於我們 聯絡資訊
[軟體程式類別]: R [程式問題]: 撰寫 function [軟體熟悉度]: 高(1年以上) 各位先進、板友。 在 R 中自定義 function 可利用 return() 輸出回傳值, 例如 f.1 <- function() {return("a")} x <- f.1() 可使 x 的值為 "a". 但有許多 R function 可以達到同時有回傳值又可在螢幕輸出字串, 例如 x <- t.test(rnorm(10)) 此時 x 物件可成為一個 list [由 mode(x) 及 str(x) 得知], 但直接呼叫 x 又可在螢幕輸出報表. 我想寫出這樣的 function, 不知道如何下手? 有請先進指導. -- http://apansharing.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.230.65.201
gsuper:f.1 <- function() {print("a");return("a")} 01/12 22:00
Wush978:try `cat` and `print` 01/12 22:36
andrew43:感謝, 但這不是我真正要的. 01/13 00:03
andrew43:在 x <- t.test(rnorm(10)) 之後, 01/13 00:03
andrew43:直接呼叫 x 會有報表, 但 x 本身仍是個 list. 01/13 00:04
andrew43:這才是我想要的, 不知道要怎麼辦到? 01/13 00:04
andrew43:我猜想這種設計的物件會在直接呼叫時自動呼叫一個func 01/13 00:06
andrew43:但我找一些原始碼並沒有看懂該怎麼做. 01/13 00:07
andrew43:我好像找到解答了. 要實作一些R的物件導向func, 01/13 00:18
andrew43:見 http://jackman.stanford.edu/blog/?p=800 01/13 00:18
andrew43:所以簡單地在 func 內要求 cat() 是不夠的. 01/13 00:22
clickhere:你要的是S3/S4 class/method. 01/13 02:22
andrew43:沒錯. 正在研究. 01/13 02:23
clickhere:對 x 給 attr (class), 假定為 class(x) 為 myobj. 01/13 02:24
clickhere:那你要寫 print.myobj() 和 summary.print.myobj() 這 01/13 02:24
clickhere:兩個函數. 然後當你輸入 x 時, R會呼叫 print.myobj(x) 01/13 02:25
clickhere:by default, R 呼叫 print.default(x) 如果 print.myobj 01/13 02:26
clickhere:不存在current environment的話 01/13 02:26
andrew43:我也找到了, 但你的說明都把重點幫我列出來了, 謝謝你. 01/13 02:28
gsuper:XDD 終於看懂你要什麼了 01/13 14:58
Wush978:我記得S4物件的話,是用show的樣子 01/15 15:32
andrew43:似乎是樣沒錯. ?show 有些說明. 01/16 03:44