2013-09-28 149 views
3

我希望在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....))的距離放大的跡象。

回答

4

我可能會建議使用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% 
5

@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% 
相關問題