代码之家  ›  专栏  ›  技术社区  ›  John L. Godlee

删除无小数点的双精度

  •  5
  • John L. Godlee  · 技术社区  · 7 年前

    我有一个向量:

    x <- c(0.0, 0.5, 1.000, 1.5, 1.6, 1.7, 1.75, 2.0, 2.4, 2.5, 3.0, 74.0)
    

    如何仅提取 x 哪些在小数点后包含非零值?例如,结果向量如下所示:

    c(0.5, 1.5, 1.6, 1.7, 1.75, 2.4, 2.5)
    

    已删除的 0.0 ,则, 1.000 ,则, 2.0 ,则, 3.0 74.0

    2 回复  |  直到 5 年前
        1
  •  9
  •   Andre Elrico    7 年前

    或者

    x[x %% 1 != 0]
    #[1] 0.50 1.50 1.60 1.70 1.75 2.40 2.50
    

    x[trunc(x) != x]
    #[1] 0.50 1.50 1.60 1.70 1.75 2.40 2.50
    

    x[as.integer(x) != x]
    #[1] 0.50 1.50 1.60 1.70 1.75 2.40 2.50
    

    或者(现在我停下来!)

    x[grepl("\\.[^0]+$",x)]
    #[1] 0.50 1.50 1.60 1.70 1.75 2.40 2.50
    

    :D

        2
  •  8
  •   akrun    7 年前

    我们可以用 round

    x[round(x) != x]
    #[1] 0.50 1.50 1.60 1.70 1.75 2.40 2.50