所以我在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
闪亮的应用程序,因此能够解决此问题而不必让用户加载程序包来解决它是非常好的。
答案 0 :(得分:2)
如果引用列名称,则列名称中可以包含特殊符号(如果禁用列名称的有效性检查):
A = data.frame(X=x, Y=y, 'P/E%'=z, check.names=FALSE)
然后,您需要始终使用带有$
调用的引号进行访问。 $
只要匹配就接受三种类型的引号中的任何一种:
a$`P/E%`
" [[" function用于处理带引号的参数,但不使用反引号:
A[['P/E%']]
如果你有一个实际的用例,它需要更完整地呈现,而不仅仅是说"需要使用Shiny"。