按特定顺序对R中的矢量进行排序

时间:2015-10-28 04:38:19

标签: r mathematical-optimization

我正在迭代地解决R中的约束优化问题,其中的问题如下:

min f(x)

s.t。 g(x)< 0

我正在迭代地进行优化,因此我有一个名为f的变量,它保存函数f的当前值和1和0的向量g,告诉我是否满足约束条件第i次迭代。为了帮助,这是一个例子

#Imagine there are 6 time points 
f = c(7,10,6,3,-1,-9)  
g = c(1,1,0,1,1,0)

所以我想跟踪在第i次迭代中找到的最佳最小值,以便满足约束。因此,我希望能够计算像

这样的矢量
h = c(7,7,7,3,-1,-1)

h记录及时发现的最小值,以满足约束条件。有没有一种简单的方法可以在R循环中执行此操作?

1 个答案:

答案 0 :(得分:3)

鉴于您的fg,我会这样做:

cummin(zoo::na.locf(ifelse(g == 1, f, NA)))
# [1]  7  7  7  3 -1 -1

或者,或许更简单:

cummin((ifelse(g == 1, f, Inf)))
# [1]  7  7  7  3 -1 -1