2
我編寫了一個可以產生百分比值的函數。當我將值傳遞給數據框時,格式化會丟失;例如99.90%變成0.9990。一些簡單的代碼來說明這一點(1列,以表明我不希望在所有列百分比):將百分比值傳遞到數據框時保留百分比格式
DT = data.frame(matrix(0,nrow=1,ncol=5), stringsAsFactors = FALSE)
DT[1,1] = 100
DT[1,2:5] = percent(c(0.9999,0.4567,0.3256,0.7777))
DT
X1 X2 X3 X4 X5
1 100 0.9999 0.4567 0.3256 0.7777
我注意到,爲了保持百分比的格式,我需要格式化數據幀提前。但是,我只能通過
列這工作做柱:
DT[,2] = percent(DT[,2])
DT[,3] = percent(DT[,3])
...
但它是一個有點乏味。不幸的是,這兩條線下方產生相同的錯誤
DT[,c(2,3,4,5)] = percent(DT[,c(2,3,4,5)])
DT[,2:5] = percent(DT[,2:5])
Error in UseMethod("percent") :
no applicable method for 'percent' applied to an object of class "data.frame"
這也不起作用:
DT[,2:5] = apply(DT[,2:5],MARGIN = 2 ,FUN=percent)
因此,我想知道是否有:
- 的方式來保持對於後者,它未被預先指定格式爲時,將值傳遞到數據幀時的百分比格式化值;或
- 一種將百分比格式分配給數據幀的大量列的有效方法。
你的第一個代碼塊在我的系統上產生了'100 100.0%45.7%32.6%77.8%'(即它保留了百分比格式)。你使用哪個'percent()'?我用'scales :: percent()'。 – hrbrmstr
我編輯過這個帖子以包含'library(scales)',因爲我認爲這個包是'percent()'函數的來源。通過@hrbrmstr閱讀評論我意識到,在其他地方可能有其他功能的名稱。請指定您使用的庫。 – RHertel
我正在使用formattable中的percent()。改變比例可以得到理想的結果。謝謝! – koteletje