[程式] R之function回傳與輸出的問題

看板Statistics作者 (apan)時間13年前 (2013/01/12 21:09), 編輯推噓2(2020)
留言22則, 4人參與, 最新討論串1/1
[軟體程式類別]: 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

01/12 22:00, , 1F
f.1 <- function() {print("a");return("a")}
01/12 22:00, 1F

01/12 22:36, , 2F
try `cat` and `print`
01/12 22:36, 2F

01/13 00:03, , 3F
感謝, 但這不是我真正要的.
01/13 00:03, 3F

01/13 00:03, , 4F
在 x <- t.test(rnorm(10)) 之後,
01/13 00:03, 4F

01/13 00:04, , 5F
直接呼叫 x 會有報表, 但 x 本身仍是個 list.
01/13 00:04, 5F

01/13 00:04, , 6F
這才是我想要的, 不知道要怎麼辦到?
01/13 00:04, 6F

01/13 00:06, , 7F
我猜想這種設計的物件會在直接呼叫時自動呼叫一個func
01/13 00:06, 7F

01/13 00:07, , 8F
但我找一些原始碼並沒有看懂該怎麼做.
01/13 00:07, 8F

01/13 00:18, , 9F
我好像找到解答了. 要實作一些R的物件導向func,
01/13 00:18, 9F

01/13 00:18, , 10F

01/13 00:22, , 11F
所以簡單地在 func 內要求 cat() 是不夠的.
01/13 00:22, 11F

01/13 02:22, , 12F
你要的是S3/S4 class/method.
01/13 02:22, 12F

01/13 02:23, , 13F
沒錯. 正在研究.
01/13 02:23, 13F

01/13 02:24, , 14F
對 x 給 attr (class), 假定為 class(x) 為 myobj.
01/13 02:24, 14F

01/13 02:24, , 15F
那你要寫 print.myobj() 和 summary.print.myobj() 這
01/13 02:24, 15F

01/13 02:25, , 16F
兩個函數. 然後當你輸入 x 時, R會呼叫 print.myobj(x)
01/13 02:25, 16F

01/13 02:26, , 17F
by default, R 呼叫 print.default(x) 如果 print.myobj
01/13 02:26, 17F

01/13 02:26, , 18F
不存在current environment的話
01/13 02:26, 18F

01/13 02:28, , 19F
我也找到了, 但你的說明都把重點幫我列出來了, 謝謝你.
01/13 02:28, 19F

01/13 14:58, , 20F
XDD 終於看懂你要什麼了
01/13 14:58, 20F

01/15 15:32, , 21F
我記得S4物件的話,是用show的樣子
01/15 15:32, 21F

01/16 03:44, , 22F
似乎是樣沒錯. ?show 有些說明.
01/16 03:44, 22F
文章代碼(AID): #1GyM1kK5 (Statistics)