我有两个向量val_hps和e:
val_hp1 <- -1
val_hp2 <- -1
val_hp3 <- +1
val_hp4 <- -1
val_hps <- c(val_hp1, val_hp2, val_hp3, val_hp4)
e <- c(-.1, -.02, +.03, 0)
我想从向量e的元素集中选择最大值,使得:
这就是我的进展方式:
e[e == 0] <- NA
e[max(which(val_hps < 0), na.rm = TRUE)]
这应该返回-.02,但它实际上返回NA。我有什么误解?谢谢!
PS。用min()函数替换max()函数就像魅力+在其他地方有一个类似的问题:“mean(,na.rm = TRUE)仍然返回NA”,但不幸的是它没有解决我的问题..
一切都按预期工作,但你的代码中有错误。在你的最后一行,你做到了
e[max(which(val_hps < 0), na.rm = TRUE)]
which(val_hps < 0)
返回1 2 4
,然后最大值将是4
。因此,您将获得e[4]
的值,这在一个不幸的巧合(或幸运)碰巧恰好是您设置为NA
的元素。这巧合是为什么它看起来像min
作品和max
没有。
正确的是
e[max(which(e < 0), na.rm = TRUE)]
这忽略了NA
中的e
,并根据需要返回e[2]
。
这完全符合我的预期:
max(e[e != 0 & val_hps < 0])
@giusti和@Frank:谢谢!