我有两个向量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”,但不幸的是它并没有解决我的问题..
答案 0 :(得分:3)
一切都按预期工作,但您的代码中有错误。在你的最后一行,你做
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]
。