[英]formattable::percent doesn't work within ifelse?
我正在嘗試在我正在設計的閃亮應用程序中為valuebox()
使用percent()
格式化程序......並且遇到了一些有趣的行為。
顯然這是有效的:
library(formattable)
a <- 0.2
percent(a)
但我需要抓住一個潛在的 NA,所以嘗試了這個:
ifelse(!is.na(a),percent(a),NA)
它返回未百分比的 a(即 0.2 而不是 20%)! 這是怎么回事? 一些額外的測試:
> ifelse(!is.na(a),percent(a),2)
[1] 0.2
> percent(a)
[1] 20.00%
> if(1==1) percent(a)
[1] 20.00%
> ifelse(1==1,percent(a),0)
[1] 0.2
> ifelse(1==1,eval(percent(a)),0)
[1] 0.2
> ifelse(1==1,parse(text = percent(a)),0)
expression(0.2)
> ifelse(1==1,eval(parse(text = percent(a))),0)
[1] 0.2
發生什么了?
完全透明: percent(NA)
確實返回NA
,所以我沒有被卡住,只是好奇。
把它放在 ifel 之外:
percent(ifelse(!is.na(a),a,NA))
[1] 20.00%
由於 NA 作為 NA 返回,您可以為 NA 執行此操作:
percent(ifelse(!is.na(NA),a,NA))
[1] NA
它還適用於帶有 NA 和數字的向量:
percent(ifelse(!is.na(c(0.2,NA)),a,NA))
[1] 20.00% NA
這也發生在帶有時間格式的ifelse
,並且更多總是嘗試將其放在外面
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.