查找R数据帧列的最大值,忽略-Inf和NA

时间:2016-03-13 19:32:13

标签: r dataframe

我有一个R dataFrame,其中一些列有-Inf和Na。我想找到忽略Inf和NA的特定列的最大值。我的dataFrame df如下:

column1     column2
  -Inf        2
   4          8
   Na         5
   7          4
   10         4 

我尝试使用

temp=df
temp[is.infinite(temp)]<-NA
my_max=max(temp$column1, na.rm=TRUE)

但是我收到以下错误:

Error in is.infinite(temp) : default method not implemented for type 'list'

我想my_max等于10.我怎样才能解决这个问题?

4 个答案:

答案 0 :(得分:4)

函数is.finite将识别(数字)向量中

中的元素
  • NA
  • NaN
  • Inf
  • -Inf

因此,此功能可以在一个步骤中对您感兴趣的列进行子集化。

temp <- read.table(text = "
  column1     column2
  -Inf        2
   4          8
   NA         5
   7          4
   10         4",
   header = TRUE)

max(temp$column1[is.finite(temp$column1)])
# [1] 10

答案 1 :(得分:1)

一种解决方案如下:

data <- data.frame(column1 = c(-Inf, 4, NA, 7, 10), column2 = c(2, 8, 5, 4, 4))
column1b <- data$column1[which(!is.na(data$column1))]
column1c <- column1b[which(column1b < Inf)]
max(column1c)

答案 2 :(得分:1)

在hablar软件包中有一个简单的解决方案。通过在max之前添加s()可以避免此问题。

function expand() {
var coll = document.querySelectorAll(".grid-item");
for (x = 0; x < coll.length; x++) {
    coll[x].addEventListener("mouseenter", 
    function () {
        event.target.style.width = "480px";
    });
}
for (x = 0; x < coll.length; x++) {
    coll[x].addEventListener("mouseleave", 
    function () {
        event.target.style.width = null;
    });
}
var coll1 = document.querySelectorAll(".collapsing");
for (x = 0; x < coll1.length; x++) {
    coll1[x].addEventListener("mouseenter", 
    function () {
        event.target.style.maxHeight = "480px";
    });
}
for (x = 0; x < coll1.length; x++) {
    coll1[x].addEventListener("mouseleave", 
    function () {
        event.target.style.maxHeight = null;
    });
}

返回10,并忽略向量的Inf和NA。

答案 3 :(得分:0)

从包含空白字段的.csv文件中读取时使用的方法:

df[df==""] <- NA
df <- na.omit(df)
print(max(df[,1]))