为何使用glue包打印时不显示数组元素标识及引号?
R中两种print输出差异的原因
核心在于R的泛型print机制——不同类型的对象会调用对应的专属print方法,而glue包重写了自定义类型的打印逻辑:
- 普通字符串的默认打印:
"hello"是R原生的character(字符)类型,调用的是默认的print.character()方法。这个方法会额外输出[1](表示这是字符向量的第一个元素,R里单个字符串本质也是长度为1的向量),同时给字符串加引号,目的是明确标识这是字符串类型,避免和其他类型的输出混淆。 - glue对象的自定义打印:
glue("hello")返回的是带glue类标记的对象(可以用class(glue("hello"))查看,会显示"glue" "character")。glue包专门为这个类写了print.glue()方法,设计逻辑就是直接输出拼接后的内容本身,去掉索引和引号,让结果更简洁直观,贴合glue工具“快速生成易读文本”的使用场景。
你可以用下面的代码验证这个逻辑:
# 查看对象类型 class("hello") class(glue("hello")) # 强制用默认方法打印glue对象,会回到原生字符串的输出样式 print.default(glue("hello"))
内容的提问来源于stack exchange,提问作者robertspierre
相关产品推荐
相关产品推荐

