我刚刚发现了以下行为 is.na()
我不明白的功能:
df <- data.frame(a = 5:1, b = "text")
df
## a b
## 1 5 text
## 2 4 text
## 3 3 text
## 4 2 text
## 5 1 text
is.na(df)
## a b
## [1,] FALSE FALSE
## [2,] FALSE FALSE
## [3,] FALSE FALSE
## [4,] FALSE FALSE
## [5,] FALSE FALSE
is.na(df) <- "0"
df
## a b 0
## 1 5 text NA
## 2 4 text NA
## 3 3 text NA
## 4 2 text NA
## 5 1 text NA
我的问题
为什么 is.na()
更改其参数(在这种情况下,向数据框添加一个额外的列)?在这种情况下,它的行为似乎是令人费解的(或至少是意外的),因为查询的结果是 FALSE
对于所有情况。
NB
这个问题不是关于子集化和改变 NA
数据框中的值 - 我知道如何做到(df[is.na(df)] <- "0"
)。这个问题是关于的行为 is.na
功能!为什么要分配到 is.something
函数改变参数本身 - 这是意料之外的。