首页 > 解决方案 > 如何按顺序找到向量的最小值

问题描述

假设我有一个向量x,我想找到这个向量的最小值。然后,我想返回一个x没有选定元素的新元素,然后从剩余值中提取最小值,依此类推。

例如,

x <- c(3,4,2,1,6,10.14,100,7)

我想提取这个向量的最小值。在这个例子中,最小值是 1。然后,我想不x返回1.

x_1 <- c(3,4,2,6,10.14,100,7)

之后,我需要从中选择最小值x_1,然后获取x_2等等。

如何在 R 中自动执行此操作?

标签: r

解决方案


我们可以创建一个remove_small_vec从向量中删除最小值的函数。然后我们运行一个while循环,直到length向量为>=1。

remove_small_vec <- function(vec) {
   vec[vec != min(vec)]
}

list_vec <- list()

while (length(x) >= 1) {
   list_vec <- c(list_vec, list(x))
   x <- remove_small_vec(x)
}


list_vec
#[[1]]
#[1]   3.00   4.00   2.00   1.00   6.00  10.14 100.00   7.00

#[[2]]
#[1]   3.00   4.00   2.00   6.00  10.14 100.00   7.00

#[[3]]
#[1]   3.00   4.00   6.00  10.14 100.00   7.00

#[[4]]
#[1]   4.00   6.00  10.14 100.00   7.00

#[[5]]
#[1]   6.00  10.14 100.00   7.00

#[[6]]
#[1]  10.14 100.00   7.00

#[[7]]
#[1]  10.14 100.00

#[[8]]
#[1] 100

这将返回与在每个列表元素中删除一个元素length相同的向量列表。x

数据

x <- c(3,4,2,1,6,10.14,100,7)

推荐阅读