使用列中的特殊符号格式化R中的表

时间:2016-03-15 04:12:43

标签: r

所以我在R中运行了一些分析,我将其存储在data.frame()中,在程序结束时我想为用户打印一个易于阅读的表。我可以将数据框返回给用户,但我希望列标题名称包含空格或特殊字符(特别是我希望有一个百分号)。所以我的想法是我可以使用print()paste()函数输出一种表格格式。

因此,在运行代码的最后,我希望输出看起来与以下内容完全相同:

     X       Y   P/E%
0.66120836 0.379 0.99
0.57320298 0.028 0.50
0.77160759 0.024 0.96
0.01532545 0.565 0.37
0.96046884 0.066 0.77

以下是生成我想要输出的数据的示例代码:

x = runif(5)
y = round(runif(5),3)
z = round(runif(5),2)

现在我可以使用data.frame()命令,但它不会允许我使用P/E%这样的列标题,例如

A = data.frame(X=x,Y=y,PE=z)

因为它不喜欢/或%符号。我能想到解决问题的壁橱是:

temp = paste("X","Y","P/E% \n",sep=" ")
for(i in 1:5){
    temp = paste(temp,paste(x[i],y[i],z[i],"\n",sep=" "),sep=" ")
}

但是如果列标题很长或者数字位数不同,则间距很奇怪。如果我使用粘贴选项,我喜欢,是否有一种方法可以使列无论数据形状或数字位数都很好地对齐?像左或右对齐?

最后,这段代码将进入R闪亮的应用程序,因此能够解决此问题而不必让用户加载程序包来解决它是非常好的。

1 个答案:

答案 0 :(得分:2)

如果引用列名称,则列名称中可以包含特殊符号(如果禁用列名称的有效性检查):

A = data.frame(X=x, Y=y, 'P/E%'=z, check.names=FALSE)

然后,您需要始终使用带有$调用的引号进行访问。 $只要匹配就接受三种类型的引号中的任何一种:

a$`P/E%`

" [[" function用于处理带引号的参数,但不使用反引号:

A[['P/E%']]

如果你有一个实际的用例,它需要更完整地呈现,而不仅仅是说"需要使用Shiny"。