R:范围(data.frame)可以排除无限值吗?

R:范围(data.frame)可以排除无限值吗?,r,range,infinity,R,Range,Infinity,我试图找到具有无限值的数据帧的最大值: > f <- data.frame(x=c(1,2),y=c(3,Inf)) > range(f) [1] 1 Inf > range(f,finite=TRUE) Error in FUN(X[[2L]], ...) : only defined on a data frame with all numeric variables Calls: Summary.data.frame -> lapply ->

我试图找到具有无限值的数据帧的最大值:

> f <- data.frame(x=c(1,2),y=c(3,Inf))
> range(f)
[1]   1 Inf
> range(f,finite=TRUE)
Error in FUN(X[[2L]], ...) : 
  only defined on a data frame with all numeric variables
Calls: Summary.data.frame -> lapply -> FUN
> range(f$y)
[1]   3 Inf
> range(f$y,finite=TRUE)
[1] 3 3

这是虫子吗?知道吗?我应该报告吗?

可能有多种可能性。如果一切都是数字,那么一个是数字

> f <- data.frame(x=c(1,2),y=c(3,Inf))
> range(as.matrix(f),finite=TRUE)
[1] 1 3
>f范围(如矩阵(f),有限=真)
[1] 1 3
您需要使用(正如David在评论中指出的):

该函数错误地要求
finite
为数值,但随后正确地将其用于删除无限值。注意:

f2 <- data.frame(x=1:2, y=3:4)
range(f2, finite=TRUE)  # Error

范围(unlist(f),finite=TRUE)
?这是一个(已知的)错误吗?嗯。。看起来有些方法出现了问题
range.default
工作得非常好,例如
range.default(f,finite=TRUE)
这是@DavidArenburg的源代码:这是一个bug。你要修好它吗?谢谢
range.default(f, finite=TRUE)
# [1] 1 3
range(f, finite=1)
# [1] 1 3
f2 <- data.frame(x=1:2, y=3:4)
range(f2, finite=TRUE)  # Error
range(f, finite=2000)
# [1] 1 3