首页 > 解决方案 > R 格式仅适用于整数,删除小数

问题描述

如何有条件地删除小数,如果number > 0.

尝试使用格式功能,并且map_dbl. 它显示错误。目的是从 1.00、10.00 中删除 .00。

kk= c(0.001,0.01,1.00,10.00)

number <-function(number){
  if(number>0){
    result <- format(number,nsmall = 0)
  return(result)
  }

}

map_dbl(kk,number)

实际:错误:无法将元素 1 从字符强制转换为双精度

预期:0.001,0.01,1,10

标签: r

解决方案


假设您想要一个字符向量作为输出:

sapply(c(0.001, 0.01, 1, 10), 
    function(x) ifelse(x<1, x, round(x,0)))
[1] "0.001" "0.01"  "1"     "10"   

要使用字符向量标记 ggplot 中的轴:

library(ggplot2)

axisLabels <- function(x) ifelse(x<1, x, as.character(round(x, 0)))

df <- data.frame(group=letters[1:5],
                 value=c(.023, .0473, 1.2, 1.5, 1.9))

ggplot(df, aes(x=group, y=value)) +
    geom_bar(stat="identity") +
    scale_y_continuous(breaks=seq(0, 2, .1),
                       labels=sapply(seq(0,2,.1), axisLabels))

在此处输入图像描述


推荐阅读