以下代码返回一个空字符串:
sprintf("%s some message", NULL)
# character(0)
# Expected result:
# " some message" or an error
这是正常行为吗? sprintf
文档似乎没有谈到NULL
参数
答案 0 :(得分:2)
这已被报告为错误here,但它实际上是预期的行为。
文档?sprintf
声明:
允许零长度参数,并给出零长度结果
Duncan Murdoch解释了它:
这是将向量作为参数并以向量化方式处理它们的函数的标准行为。如果其中一个参数的长度为零,则结果为长度为零。例如,1 + NULL是长度为零的数字向量。
因此,如果您想使用NULL
,请坚持使用paste
:
paste(NULL,"some message")
#[1] " some message"