對具有 NA 的列進行子集化會回傳一整行 NA。我知道有多種方法可以避免這種情況;我的問題是為什么會發生這種情況?例如:
> d<-data.frame(a = 1:3, b = c(NA, 2, 5))
> d[d$b == 2,]
a b
NA NA NA
2 2 2
我會理解它是否也僅回傳第 1 行,但它會回傳一整行 NA ,該行從未存在于我子集化的物件中。這似乎很奇怪且無濟于事,我無法解釋為什么會存在這種行為(同樣,我知道如何防止它)。
uj5u.com熱心網友回復:
這確實不直觀,但是如果您檢查一下d$b == 2,您會發現:
> d$b == 2
#[1] NA TRUE FALSE
當您使用 NA 對一行進行子集化時,它會添加一個 NA 行:
> d[c(NA, 2), ]
# a b
#NA NA NA
#2 2 2
d[d$b == 2, ]不能回傳第一行,因為 的第一個值d$b == 2應該是 1,而這里是NA.
uj5u.com熱心網友回復:
除了Ma?l 的正確答案之外,要僅回傳TRUE值,請使用which. 它回傳條件為的索引TRUE。
d <- data.frame(a = 1:3, b = c(NA, 2, 5))
d[d$b == 2,]
#> a b
#> NA NA NA
#> 2 2 2
d[which(d$b == 2), ]
#> a b
#> 2 2 2
使用reprex v2.0.2創建于 2022-10-28
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/522764.html
標籤:r
