【发布时间】:2017-09-18 10:51:58
【问题描述】:
我正在尝试将小数点后的位数设置为 1。 我已经完成了这个计算:
options(digits = 3)
DT<-data.table(x=c("a","b","c",NA,"b","e"),v=rnorm(6))
ans<-DT[,lapply(.SD,function(x) length(which(is.na(x)))/length(x)*100)]
现在,ans 给了我列中 NA 的百分比:
x v
16.7 0
但是当我尝试添加百分号“%”时:
ans[,lapply(.SD, function(x) paste(x,"%",sep = ''))]
十进制数字又回来了:
x v
1: 16.6666666666667% 0%
我做错了什么?我怎样才能得到这个输出?:
x v
16.7% 0%
谢谢。
【问题讨论】:
-
还有
round,比如ans<-DT[,lapply(.SD,function(x) round(length(which(is.na(x)))/length(x)*100, 1))],然后是你的最后一步。请注意,options(digits = 3)控制打印的位数,而不是 R 为每个数字存储的位数。 -
有用的解释,谢谢。