【发布时间】:2014-06-05 15:07:25
【问题描述】:
我正在尝试使用sprintf 函数将前导“0”添加到字符,并使所有字符的长度相同。但是我得到的是领先的空间。
我的代码:
a <- c("12","123", "1234")
sprintf("%04s",a)
[1] " 12" " 123" "1234"
我想得到什么:
[1] "0012" "0123" "1234"
sprintf 手册说:“对于字符,这个零填充在某些平台上,而在其他平台上被忽略。”
我的版本:
平台 x86_64-w64-mingw32
拱 x86_64
操作系统 mingw32
系统 x86_64、mingw32
状态
专业 3
次要 1.0
2014 年
04月
第 10 天
svn 版本 65387
语言 R
version.string R 版本 3.1.0 (2014-04-10)
绰号春舞
【问题讨论】:
-
您需要更多示例才能知道您要做什么。正如手册所说,有时这在其他系统上会被忽略。也许
sprintf("%07d",125) -
它适用于我(OSX 10.8.4 上的 R 3.0.2)。您是否尝试将字符向量转换为数值向量?
-
@beginneR @RichardScriven 当向量的所有元素长度相同时,这可能是一个解决方案。但是,当元素具有不同的长度并且 OP 想要将所有元素转换为具有前导零的相同长度时,
paste(或paste0)将无法提供所需的解决方案。