Re: [問題] 函數的output排版,與一些相關問題

看板R_Language作者 (拒看低質媒體)時間11年前 (2013/12/23 01:16), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《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
文章代碼(AID): #1IjnvMpd (R_Language)
文章代碼(AID): #1IjnvMpd (R_Language)