打印和显示字符串

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"))