这与这个问题非常相似:sprintf invalid format '%d',但它有所不同。 std::replace(v.begin(), v.end(), "Sugar", "Honey");
为sprintf()
的{{1}}格式错误提供了格式,而不是"%d"
。
c(NA_integer_, 1)
与上述问题不同的是c(1, NA_integer)
正常工作。此外,sprintf("%d", NA)
#> [1] "NA"
sprintf("%d", 1)
#> [1] "1"
sprintf("%d", NA_integer_)
#> [1] "NA"
sprintf("%d", c(1, NA_integer_))
#> [1] "1" "NA"
sprintf("%d", c(NA_integer_, 1))
#> Error in sprintf("%d", c(NA_integer_, 1)) :
#> invalid format '%d'; use format %f, %e, %g or %a for numeric objects
显然是一个整数,所以肯定不会出现问题吗?