我正在尝试打印一些混合文本和变量,所有这些都在一行上。 c()
不必要地强制所有字符字段为最大字段的宽度,即在这种情况下为12个字符。如何获得简单的连接?
> print(c('Splitting col',i,'x<', xsplitval),quote=FALSE)
[1] Splitting col 9 x< 6.7
(我已经检查了所有SO问题,以及所有R文档,包括印刷品,选项,格式和R邮件列表,以及Google等)。
答案 0 :(得分:4)
您可能想要使用paste
:
i <- 9
xsplitval <- 6.7
paste('Splitting col',i,'x<', xsplitval, sep="")
[1] "Splitting col9x<6.7"
答案 1 :(得分:1)
另一种选择是使用sprintf
函数,它允许进行一些数字格式化:
i <- 9
xsplitval <- 6.7
sprintf("Splitting col %i, x<%3.1f", i, xsplitval)
答案 2 :(得分:1)
为此,我建议使用连接和打印功能cat
。另一个选项是message
,它将输出发送到stderr。
> i <- 9
> xsplitval <- 6.7
> cat('Splitting col ',i,' x<', xsplitval, '\n', sep="")
Splitting col 9 x<6.7
> message('Splitting col ',i,' x<', xsplitval, sep="")
Splitting col 9 x<6.7
c
是将值组合到向量中的函数;它将结果排成等间距列,以便更容易地查看结果向量。
> c('Splitting col ',i,' x<', xsplitval)
[1] "Splitting col " "9" " x<" "6.7"
paste
将字符向量连接在一起,sprintf
就像C函数一样,但两者都返回字符向量,默认输出带引号和数字给出索引,每行都有输出以...开头,因此您可能希望将它们包装在cat
或message
。
> s1 <- paste('Splitting col ',i,' x<', xsplitval, sep=""); s1
[1] "Splitting col 9 x<6.7"
> cat(s1,'\n')
Splitting col 9 x<6.7
> s2 <- sprintf("Splitting col %i, x<%3.1f", i, xsplitval); s2
[1] "Splitting col 9, x<6.7"
> cat(s2,'\n')
Splitting col 9, x<6.7