提问人:Hack-R 提问时间:4/21/2016 最后编辑:CommunityHack-R 更新时间:11/3/2020 访问量:3368
在 R 中的值替换过程中区分无穷大和负无穷大
Distinguishing between infinity and negative infinity during value replacement in R
问:
在这个线程中,有一些很好的例子,说明如何用 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 <- c(-1,2,3,4,100/0,-100/0)
[1] -1 2 3 4 Inf -Inf
输出数据示例
[1] -1 1 2 3 4 4 -1
答:
11赞
csgillespie
4/21/2016
#1
为什么不直接与标准或比较相结合呢?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
1赞
martin
12/4/2018
#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
评论
0赞
Shinobi_Atobe
12/5/2018
为什么不只是 ?a == -Inf
评论