作者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