我使用Rstudio
一個script.R
運行幾百行代碼,但什麼讓我很煩,有點比Matlab
是,Rstudio
控制檯保持機械顯示從我的腳本文件中的每個command line
。有沒有辦法來防止這種情況發生?防止Rstudio控制檯命令
的令人沮喪部分來了,當一個人使用sprintf()
例如,該命令從腳本文件中的行混合起來使用控制檯sprintf()
的程度。
最佳,
我使用Rstudio
一個script.R
運行幾百行代碼,但什麼讓我很煩,有點比Matlab
是,Rstudio
控制檯保持機械顯示從我的腳本文件中的每個command line
。有沒有辦法來防止這種情況發生?防止Rstudio控制檯命令
的令人沮喪部分來了,當一個人使用sprintf()
例如,該命令從腳本文件中的行混合起來使用控制檯sprintf()
的程度。
最佳,
與ctrl+shift+S
運行代碼。或者在script.R
的右上方找到源碼,然後運行Source
而不是Source with echo
。而且,對於您要求印刷@Konrad Rudolph建議使用消息message("%f", pi)
是最佳解決方案。
如果打印的消息是爲了跟蹤代碼的狀態這裏有一些有用的解決方案showing a status message in R
如果你只是想運行script.R
嘗試使用source
函數。
source("script.R") # assuming script.R is in your working directory.
此函數將運行腳本而不顯示命令行中的所有內容。
像Matlab的sprintf
,R的sprintf
只創建一個字符串,它不會將其打印輸出*您必須顯式調用print
功能,看什麼:
print(sprintf("%f", pi)) # prints
一個普通sprintf
正式創建一個字符串,然後丟棄它,因爲它沒有被保存到一個變量:
sprintf("%f", pi) # does nothing
然而,這種爲你工作,因爲REPL(運行R代碼裏面的一行,時間在命令行)不服從該指令放棄不保存到變量的值,而是打印它們。這是使命令行更容易工作的一種便利方式。你可以輸入1+1
並讓它打印2
,即使R腳本通常會默默丟棄該值。
將文本打印到控制檯的其他功能是cat
和message
,它們各有輕微的不同。查看他們的幫助文件的使用。
*從技術上講,Matlab將打印任何未被;
終止的語句的值,包括字符串。因此,如果沒有分號,那麼sprintf
產生的字符串可能會被打印出來,儘管它不是直接由sprintf
完成的,而是由Matlab的通用打印全部行爲行爲完成的。在我看來,這是一個奇怪的功能。
採購腳本時沒有兩個選項:Source和Source with Echo?這聽起來像你正在點擊源與回聲。我總是點擊普通的Source並沒有看到腳本行。 – drhagen
@drhagen:thx突出顯示與Echo的區別,儘管我沒有點擊任何一個。在編寫腳本時,我正在使用'ctrl + a',然後'f5'執行它。根據你的反饋,當我點擊普通的'Source'時,問題是'sprintf()'沒有出現在控制檯中。 – owner
這是因爲sprintf不打印到命令行;它創建一個字符串。如果你一行一行地運行,REPL會爲了方便而打印出純粹的值(就像一個單純的'1 + 1'一樣),但是採集腳本不會這樣做,它只是丟棄它們。在這些'sprintf'周圍放置一個'print()'。 – drhagen