簡體   English   中英

formattable::percent 在 ifelse 中不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM