我有一个名字的矢量,像这样:
x <- c("Marco", "John", "Jonathan")
我需要格式化它,以便通过添加前导和尾随空格使名称以10个字符的字符串为中心:
> output
# [1] " Marco " " John " " Jonathan "
我希望解决方案不如使用paste
,rep
和计算nchar
那么复杂? (可能是sprintf
,但我不知道如何)。
答案 0 :(得分:3)
这是一个hadoopuser@sarkar-D900C:/home/sarkar/tensorflow$ gcc hello_tf.c
hello_tf.c: In function ‘main’:
hello_tf.c:5:3: error: stray ‘\342’ in program
printf(“Tensor flow C library version %s\n”,TF_Version());
^
hello_tf.c:5:3: error: stray ‘\200’ in program
hello_tf.c:5:3: error: stray ‘\234’ in program
hello_tf.c:5:13: error:‘Tensor’ undeclared (first use in thisfunction)
printf(“Tensor flow C library version %s\n”,TF_Version());
^
hello_tf.c:5:13: note: each undeclared identifier is reported only
once for each function it appears in
hello_tf.c:5:20: error: expected ‘)’ before ‘flow’
printf(“Tensor flow C library version %s\n”,TF_Version());
^
hello_tf.c:5:20: error: stray ‘\’ in program
hello_tf.c:5:20: error: stray ‘\342’ in program
解决方案,它使用简单的辅助向量sprintf()
来确定低边宽度。然后,我们可以使用f
字符将宽度插入到我们的格式中,右侧的*
可以说明名称中的奇数个字符。由于我们的最大字符宽度为10,因此每个超过10个字符的名称将保持不变,因为我们使用ceiling()
调整这些宽度。
pmax()
数据:
f <- pmax((10 - nchar(x)) / 2, 0)
sprintf("%-*s%s%*s", f, "", x, ceiling(f), "")
# [1] " Marco " " John " " Jonathan " "Christopher"
答案 1 :(得分:0)
最终,我知道这是不一样的语言,但是值得一提的是 Python (不是R)有一个内置方法可以做到这一点,这称为居中字符串:< / p>
example = "John"
example.center(10)
#### ' john '
它在右边添加了奇数,并允许您输入所选的填充字符。尽管它不是向量化的。