列印和顯示字串

R 有幾個可用於列印或顯示資訊的內建函式,但 printcat 是最基本的。由於 R 是一種解釋型語言 ,你可以直接在 R 控制檯中嘗試這些:

print("Hello World")
#[1] "Hello World"
cat("Hello World\n")
#Hello World

注意兩個函式的輸入和輸出的差異。 (注意:使用 x <- "Hello World" 建立的 x 的值中沒有引號字元。它們在輸出階段由 print 新增。)

cat 將一個或多個字元向量作為引數並將它們列印到控制檯。如果字元向量的長度大於 1,則引數以空格分隔(預設情況下):

cat(c("hello", "world", "\n"))
#hello world

沒有換行符(\n),輸出將是:

cat("Hello World")
#Hello World> 

輸出後立即顯示下一個命令的提示。 (某些控制檯,例如 RStudio 可能會自動將換行符附加到不以換行符結尾的字串。)

print通用函式的一個示例,這意味著檢測到傳遞的第一個引數的類,並使用特定於類的方法進行輸出。對於像 Hello World 這樣的字元向量,結果類似於 cat 的輸出。但是,引用字串並輸出數字 [1] 以指示字元向量的第一個元素(在這種情況下,第一個也是唯一的元素):

print("Hello World")
#[1] "Hello World"

當我們簡單地要求 R 列印變數時,我們也會看到這種預設的列印方法。注意輸入 s 的輸出與呼叫 print(s)print("Hello World") 相同:

s <- "Hello World"
s
#[1] "Hello World"

或者甚至沒有將它分配給任何東西:

"Hello World"
#[1] "Hello World"

如果再加另一個字串作為向量的第二元素(使用 c() 函式 ç oncatenate 的元件一起),然後 print() 的行為看上去從 cat 的相當多的不同的:

print(c("Hello World", "Here I am."))
#[1] "Hello World" "Here I am."

觀察該 c() 功能並沒有做字串串聯。 (為此需要使用 paste。)R 表示字元向量通過分別引用它們而具有兩個元素。如果我們有一個足夠長的向量來跨越多行,R 將列印從每行開始的元素的索引,就像它在第一行的開頭列印 [1] 一樣。

c("Hello World", "Here I am!", "This next string is really long.")
#[1] "Hello World"                      "Here I am!"                      
#[3] "This next string is really long."

print 的特定行為取決於傳遞給函式的物件的

如果我們將 print 稱為具有不同類的物件,例如 numericlogical,則從輸出中省略引號以指示我們正在處理非字元類的物件:

print(1)
#[1] 1
print(TRUE)
#[1] TRUE

因子物件以與字元變數相同的方式列印,當控制檯輸出用於在 SO 問題體中顯示物件時,這通常會產生歧義。除了互動式環境外,很少使用 catprint。明確呼叫 print() 是非常罕見的(除非你想抑制引號的外觀或檢視一個函式返回的物件),因為在控制檯輸入 fooprint(foo) 的快捷方式。R 的互動式控制檯稱為 REPL,即“讀取 - 評估 - 列印 - 迴圈”。cat 函式最好儲存用於特殊目的(例如將輸出寫入開啟的檔案連線)。有時它在函式內部使用(對 print() 的呼叫被抑制), **** 。首選方法是 message()warning() 用於中間訊息; 它們的行為與 cat 類似,但可以由終端使用者選擇性地抑制。應該簡單地返回最終結果,以便使用者可以指定它以在必要時儲存它。

message("hello world")
#hello world
suppressMessages(message("hello world"))