假设我在R中有3个向量:
x <- c("xskdlfl", " y", "lkjsf")
y <- c(22.5, 6, 7.0)
z <- c("slk","llkjdf", "xx")
Run Code Online (Sandbox Code Playgroud)
我想产生一个格式化的表格输出,最右边的字符对齐,除第一列外的所有列都这样对齐:
xskdlfl y lkjsf
22.5 5.6 7.0
slk llkjdf xx
Run Code Online (Sandbox Code Playgroud)
在R中没有太多凌乱的编程的情况下,我无法弄清楚如何使用sprintf做到这一点。在R中使用sprintf可以做到这一点的简单方法吗?使用“格式?” 我希望链接到一个好的sprintf教程。提前致谢。
x <- c("xskdlfl", " y", "lkjsf")
y <- c(22.5, 6, 7.0)
z <- c("slk","llkjdf", "xx")
(dat <- setNames(data.frame(rbind(x, y, z)), c('x','y','z')))
# x y z
# x xskdlfl y lkjsf
# y 22.5 6 7
# z slk llkjdf xx
with(dat, data.frame(x = sprintf(paste0('%-', max(nchar(x)), 's'), x), y, z))
# x y z
# 1 xskdlfl y lkjsf
# 2 22.5 6 7
# 3 slk llkjdf xx
Run Code Online (Sandbox Code Playgroud)
您可以像这样在字符串的左侧或右侧添加填充:
sprintf('%7s', z)
# [1] " slk" " llkjdf" " xx"
sprintf('%-7s', z)
# [1] "slk " "llkjdf " "xx "
Run Code Online (Sandbox Code Playgroud)
只是根据nchar字符串的字符数确定多少(在这种情况下为7)