簡體   English   中英

max(x,na.rm = TRUE)無論如何都返回“NA”

[英]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的元素集中選擇最大值,使得:

  1. 該集僅包含與向量val_hps中的負元素具有相同位置的值;
  2. 該集合不包含數值為0的元素。

這就是我的進展方式:

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)]

這忽略了eNA並且根據需要返回e[2]

這完全符合我的預期:

max(e[e != 0 & val_hps < 0])

@giusti和@Frank:謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM