在R中的值替换期间区分无穷大和负无穷大

Hac*_*k-R 6 r infinity

有一些很好的例子说明如何在此线程中用NA替换R中的无限值.

例如,

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

但是,这不区分positive(Inf)和negative infinity(-Inf).

我需要做出这种区分,因为NA我不想仅仅用它们替换它们并将它们抛出或者将它们抛弃,我想尝试使用最大非无穷大值来表示正无穷大而使用最小非无穷大值来表示负无穷大(以及像那样).

这可能吗?

输入数据示例

a <- c(-1,2,3,4,100/0,-100/0)

[1] -1 2 3 4 Inf -Inf

示例输出数据

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

csg*_*pie 9

为什么不is.infinite与标准><比较结合?

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
Run Code Online (Sandbox Code Playgroud)