R语言打印和显示字符串
示例
R具有几个内置的可用于打印或显示信息,但功能print和cat是最基本的。由于R是一种解释型语言,因此您可以直接在R控制台中尝试以下方法:
print("Hello World") #[1] "Hello World" cat("Hello World\n") #Hello World
请注意,这两个功能的输入和输出都不同。(注意:用x创建的值中没有引号字符x<-"HelloWorld"。print在输出阶段将它们加起来。)
cat将一个或多个字符向量作为参数并将其打印到控制台。如果字符向量的长度大于1,则参数由空格分隔(默认情况下):
cat(c("hello", "world", "\n")) #hello world
没有换行符(\n),输出将是:
cat("Hello World") #Hello World>
输出后立即出现下一条命令的提示。(某些控制台,例如RStudio可能会自动将换行符追加到不以换行符结尾的字符串。)
print是“泛型”函数的示例,这意味着将检测传递的第一个参数的类,并使用特定于类的方法进行输出。对于像这样的字符向量"HelloWorld",其结果类似于的输出cat。但是,字符串被引号引起来,并[1]输出一个数字以指示字符向量的第一个元素(在这种情况下,第一个也是唯一的元素):
print("Hello World") #[1] "Hello World"
当我们简单地要求R打印变量时,也会看到这种默认的打印方法。注意type的输出s与callprint(s)或print("HelloWorld"):
s <- "Hello World" s #[1] "Hello World"
甚至没有将其分配给任何东西:
"Hello World" #[1] "Hello World"
如果再加另一个字符串作为矢量的第二元素(使用c()函数来Çoncatenate的元件一起),然后的行为print()看上去从的相当多的不同的cat:
print(c("Hello World", "我在这里。")) #[1] "Hello World" "我在这里。"
观察该c()功能并没有做字符串串联。(paste为此需要使用一个。)R通过单独引用两个字符来显示字符向量。如果我们有一个足以跨多行的向量,则R将在每行的开头打印元素的索引,就像它[1]在第一行的开头打印一样。
c("Hello World", "我在这里!", "下一个字符串确实很长。") #[1] "Hello World" "我在这里!" #[3] "下一个字符串确实很长。"
的特定行为print取决于传递给函数的对象的类。
如果我们调用print具有不同类的对象,例如“数字”或“逻辑”,则输出中将省略引号,以表明我们正在处理的不是字符类的对象:
print(1) #[1] 1 print(TRUE) #[1] TRUE
因子对象的打印方式与字符变量的打印方式相同,当使用控制台输出在SO问题正文中显示对象时,经常会产生歧义。很少使用cat或print在交互式环境中使用。显式调用print()特别少见(除非您想取消引号的出现或查看invisible由函数返回的对象),因为foo在控制台输入是的快捷方式print(foo)。R的交互式控制台称为REPL,即“read-eval-print-loop”。cat最好将函数保存为特殊目的(例如将输出写入打开的文件连接)。有时,它在函数内部使用(在其中print()禁止调用),但是使用cat()在函数中生成输出到控制台的不良做法。首选方法是发送message()或warning()接收中间消息。它们的行为类似于,cat但最终用户可以选择抑制它们。最终结果应该简单地返回,以便用户可以根据需要分配它来存储它。
message("hello world") #hello world suppressMessages(message("hello world"))