'sprintf'的意外行为

时间:2018-03-08 15:48:59

标签: r

以下代码返回一个空字符串:

sprintf("%s some message", NULL)
# character(0)

# Expected result:
# " some message" or an error

这是正常行为吗? sprintf文档似乎没有谈到NULL参数

1 个答案:

答案 0 :(得分:2)

这已被报告为错误here,但它实际上是预期的行为。

文档?sprintf声明:

  

允许零长度参数,并给出零长度结果

Duncan Murdoch解释了它:

  

这是将向量作为参数并以向量化方式处理它们的函数的标准行为。如果其中一个参数的长度为零,则结果为长度为零。例如,1 + NULL是长度为零的数字向量。

因此,如果您想使用NULL,请坚持使用paste

paste(NULL,"some message")
#[1] " some message"