【问题标题】:Distinguishing between infinity and negative infinity during value replacement in R在R中的值替换期间区分无穷大和负无穷大
【发布时间】:2016-08-13 16:41:43
【问题描述】:

this thread 中有一些很好的例子说明如何用 NA 替换 R 中的无限值。

例如,

DT <- data.table(dat)
invisible(lapply(names(DT),function(.name) set(DT, 
           which(is.infinite(DT[[.name]])), j = .name,value =NA)))

但是,这并不能区分正无穷大 (Inf) 和负无穷大 (-Inf)。

我需要做出这种区分,因为我不只是用 NA 替换这些值并将它们丢弃或估算它们,我想尝试使用最大非无限值来表示正无穷大和最小非无穷大值对于负无穷大(以及类似的东西)。

这可能吗?

输入数据示例

a &lt;- c(-1,2,3,4,100/0,-100/0)

[1] -1 2 3 4 Inf -Inf

输出数据示例

[1] -1 1 2 3 4 4 -1

【问题讨论】:

    标签: r infinity


    【解决方案1】:

    为什么不将is.infinite 与标准&gt;&lt; 比较结合起来?

    a <- c(-1,2,3,4,100/0,-100/0)
    
    a[is.infinite(a) & a < 0] <- min(a[!is.infinite(a)])
    a[is.infinite(a) & a > 0] <- max(a[!is.infinite(a)])
    a
    [1] -1  2  3  4  4 -1
    

    【讨论】:

      【解决方案2】:

      您可以以更简单的方式提取/替换向量中的任何 -Inf 或 Inf 值:

      a <- c(-1,2,3,4,100/0,-100/0)   
      
      a[a <= -Inf] <- min(a[is.finite(a)])    
      a[a >= Inf] <- max(a[is.finite(a)])  
      
      a
      [1] -1  2  3  4  4 -1
      

      【讨论】:

      • 为什么不只是a == -Inf
      猜你喜欢
      • 2013-11-29
      • 1970-01-01
      • 2017-08-19
      • 2022-08-12
      • 2019-03-19
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多