在data.frame R中包含数值旁边的%或任何其他符号

Max*_*ian 3 r

我想在一个a中包含sign%,data.frame以便data.frame稍后在列的每一行print(xtable(data.frame....))的数值旁边打印一个%符号.data2Values in %

数据示例:

data1 <- rnorm(5,10,2)
data2 <- round(rexp(5,2),1)
frameData <- data.frame(data1,data2)
colnames(frameData) <- c("Measurement","Values in %")
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的事情:

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 %","")
Run Code Online (Sandbox Code Playgroud)

但我不能让标志足够接近,后来print(xtable(frameData....))距离放大了.

Ari*_*man 5

@AnandaMahto使用基地R.给出了一个很好的答案

如果您愿意使用图书馆,那么有一种更简单的方法.该scales库有许多用于格式化数字的函数:

library(scales)
> percent(seq(10)/10)
 [1] "10%"  "20%"  "30%"  "40%"  "50%"  "60%"  "70%"  "80%"  "90%"  "100%"
Run Code Online (Sandbox Code Playgroud)

最后,因为数字类型不能保存%值,所以可以向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%
Run Code Online (Sandbox Code Playgroud)