[英]max(x, na.rm = TRUE) returns “NA” anyway
我有兩個向量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)]
這忽略了e
的NA
並且根據需要返回e[2]
。
這完全符合我的預期:
max(e[e != 0 & val_hps < 0])
@giusti和@Frank:謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.