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