如何找到唯一的最大值

时间:2019-09-04 14:41:34

标签: r unique

我在r中有以下数据:

 Here's my config parameters

settings: this.isMobile ? {
                filterPaneEnabled: this.reportConfig.filterPaneEnabled,
                navContentPaneEnabled: this.reportConfig.navContentPaneEnabled,
                layoutType: 0,
                customLayout: {
                    displayOption: 1
                }
            } :
                {
                    filterPaneEnabled: this.reportConfig.filterPaneEnabled,
                    navContentPaneEnabled: this.reportConfig.navContentPaneEnabled
                }

然后,我想在此列表中找到唯一的最大值,即30。我考虑过使用“ while”或某种程度上的“ for loop”,但是我不确定如何使用。有人可以帮我吗?

2 个答案:

答案 0 :(得分:2)

只需对向量进行过滤,即可删除除 重复值之外的所有重复值,然后取其最大值:

max(dummyData[! (duplicated(dummyData) | duplicated(dummyData, fromLast = TRUE))])
[1] 30

或者,您可以利用table()

max(as.numeric(names(which(table(dummyData) == 1))))

答案 1 :(得分:0)

这感觉不必要地冗长,但是可以正常工作(如果您有大向量,我想也应该避免使用sort()

dummyData <- c(5, 8, 9, 25, 30, 55, 55)

findUniqueMax <- function(input_vec) {
  found <- FALSE
  ind <- 1
  input_vec <- sort(input_vec, decreasing = TRUE)

  while(!found) {
    if (ind > length(input_vec)) {
      val <- NULL
      found <- TRUE
    } else if (sum(input_vec[ind] == input_vec) > 1) {
      ind <- ind + 1
    } else {
      val <- input_vec[ind]
      found <- TRUE
    }
  }
  return(val)
}

findUniqueMax(dummyData)