如何顺序找到向量的最小值

时间:2018-11-23 09:28:46

标签: r

假设我有一个向量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中自动执行此操作?

1 个答案:

答案 0 :(得分:4)

我们可以创建一个函数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)