我在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”,但是我不确定如何使用。有人可以帮我吗?
答案 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)