作者andrew43 (apan)
看板Statistics
標題[程式] R之function回傳與輸出的問題
時間Sat Jan 12 21:08:57 2013
[軟體程式類別]: 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
1F:→ gsuper:f.1 <- function() {print("a");return("a")} 01/12 22:00
2F:推 Wush978:try `cat` and `print` 01/12 22:36
3F:→ andrew43:感謝, 但這不是我真正要的. 01/13 00:03
4F:→ andrew43:在 x <- t.test(rnorm(10)) 之後, 01/13 00:03
5F:→ andrew43:直接呼叫 x 會有報表, 但 x 本身仍是個 list. 01/13 00:04
6F:→ andrew43:這才是我想要的, 不知道要怎麼辦到? 01/13 00:04
7F:→ andrew43:我猜想這種設計的物件會在直接呼叫時自動呼叫一個func 01/13 00:06
8F:→ andrew43:但我找一些原始碼並沒有看懂該怎麼做. 01/13 00:07
9F:→ andrew43:我好像找到解答了. 要實作一些R的物件導向func, 01/13 00:18
11F:→ andrew43:所以簡單地在 func 內要求 cat() 是不夠的. 01/13 00:22
12F:→ clickhere:你要的是S3/S4 class/method. 01/13 02:22
13F:→ andrew43:沒錯. 正在研究. 01/13 02:23
14F:→ clickhere:對 x 給 attr (class), 假定為 class(x) 為 myobj. 01/13 02:24
15F:→ clickhere:那你要寫 print.myobj() 和 summary.print.myobj() 這 01/13 02:24
16F:→ clickhere:兩個函數. 然後當你輸入 x 時, R會呼叫 print.myobj(x) 01/13 02:25
17F:→ clickhere:by default, R 呼叫 print.default(x) 如果 print.myobj 01/13 02:26
18F:→ clickhere:不存在current environment的話 01/13 02:26
19F:→ andrew43:我也找到了, 但你的說明都把重點幫我列出來了, 謝謝你. 01/13 02:28
20F:→ gsuper:XDD 終於看懂你要什麼了 01/13 14:58
21F:推 Wush978:我記得S4物件的話,是用show的樣子 01/15 15:32
22F:→ andrew43:似乎是樣沒錯. ?show 有些說明. 01/16 03:44