在data.frame中包含%或任何其他符号旁边的数字值R
问题描述:
我希望在data.frame
中包含符号%,以便data.frame
稍后打印为print(xtable(data.frame....))
,其中%符号紧接着data2
的数值列的每一行Values in %
。在data.frame中包含%或任何其他符号旁边的数字值R
数据例如:
data1 <- rnorm(5,10,2)
data2 <- round(rexp(5,2),1)
frameData <- data.frame(data1,data2)
colnames(frameData) <- c("Measurement","Values in %")
我已经试过这样的事情:
data1 <- rnorm(5,10,2)
data2 <- round(rexp(5,2),1)
data3 <- rep("%",5)
frameData <- data.frame(data1,data2,data3)
colnames(frameData) <- c("Measurement","Values in %","")
但我不能得到足够接近,后来print(xtable(frameData....))
的距离放大的迹象。
答
我可能会建议使用sprintf
,这会给你很好的控制格式化这样的事情。
这里有一个基本的例子:
frameData$`Values in %` <- sprintf("%1.1f%%", frameData$`Values in %`)
frameData
# Measurement Values in %
# 1 13.423642 0.2%
# 2 12.464654 0.2%
# 3 10.805657 0.2%
# 4 11.188839 1.6%
# 5 9.248013 0.2%
答
@AnandaMahto已使用基本R.
有一个更简单的方式给予了极大的答案,如果你愿意,虽然使用图书馆。该scales
库中有格式化数字一组函数:
library(scales)
> percent(seq(10)/10)
[1] "10%" "20%" "30%" "40%" "50%" "60%" "70%" "80%" "90%" "100%"
最后,由于数字类型不能容纳%的值,你可以一个属性添加到data.frame,然后打印时以后使用这样的:
attr(frameData,"pctCols") <- c(2)
printPct <- function(x) { require(taRifx); japply(x,attr(x,"pctCols"),percent) }
> printPct(frameData)
Measurement Values in %
1 11.992833 160%
2 12.556494 NaN%
3 10.837724 200%
4 9.141887 200%
5 8.056046 100%