Re: [問題] 函數的output排版,與一些相關問題
※ 引述《coo20819 (Mike)》之銘言:
: [問題類型]:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來),
: [軟體熟悉度]:
: 使用者(已經有用R 做過"一點"作品)
: [問題敘述]:
: 版上各位好,目前我在寫一些函數想做成套件,希望讓output排版可以漂亮一點,
: 所以使用cat這個函數,但是使用cat會強制在Consolo輸出,可以看例子
: 會比較容易理解我的問題,謝謝
: [程式範例]:
: square <- function(x) {
: cat(" It is a test.", "\n")
: cat(" The square of (", x, ") equal to", x^2)
: }
: square(2)
: temp <- square(2)
: 簡單來說,我希望temp <- square(2)這行可以不要在Consolo顯示
: It is a test.
: The square of ( 2 ) equal to 4,
: 我打temp才出現
: It is a test.
: The square of ( 2 ) equal to 4
: 目前用Cat卻導致相反結果,有小研究過過lm函數可以做到類似狀態,
: 但lm函數太複雜,實在無法輕易看懂,想請教版上高手幫忙解答!!
: 在此感謝各位看完我的問題!謝謝。
: P.S. 另外在請教另一個小問題,上面
: It is a test.
: The square of ( 2 ) equal to 4
: 可以看出如果需要文字與變數夾雜,勢必會有空格,也就是會這樣( 2 )
: 這有辦法解決嗎? ( 2 ) ----> (2) 變成這樣!
: 再次感謝!!!!
: [關鍵字]:
: 排版; cat
我不是很清楚你的需求, 不過我可以簡單解釋`lm`的原理給你.
也許你會比較清楚你該怎麼做.
---
`lm`會回傳類別為"lm"的物件:
```r
g <- lm(speed ~ dist, cars)
class(g)
```
```
## [1] "lm"
```
當我們直接呼叫`g`的時候, 會呼叫`print`方法, 透過S3, 因為g是`lm`物件, 所以最終
會呼叫`print.lm`這個函數:
```r
print.lm(g) # the same as call g directly
```
```
##
## Call:
## lm(formula = speed ~ dist, data = cars)
##
## Coefficients:
## (Intercept) dist
## 8.284 0.166
```
```r
print.lm <- function(g) cat("overrided")
g
```
```
## overrided
```
當呼叫`lm(...)`的時候, R預設會呼叫`print(lm(...))`, 所以...
```r
lm(speed ~ dist, cars)
```
```
## overrided
```
上面`g <- lm(...)`的指令不會印出東西是因為`<-`這種函數預設會使用`invisible`來
讓R放棄自動呼叫`print`
```r
invisible(g)
```
--
歡迎到ptt R_Language版分享R 的相關知識
歡迎加入 Taiwan R User Group : http://www.facebook.com/Tw.R.User
聚會報名 http://www.meetup.com/Taiwan-R/
聚會影片 https://www.youtube.com/user/TWuseRGroup
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.34.138.85
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 4 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章