レベル「Y」と「N」の SMOKE という名前の因子があります。欠損値は NA に置き換えられました (初期レベル「NULL」から)。ただし、要因を表示すると、次のようになります。
head(SMOKE)
# N N <NA> Y Y N
# Levels: Y N
R が と表示NA
されるのはなぜ<NA>
ですか? そして、違いはありますか?
レベル「Y」と「N」の SMOKE という名前の因子があります。欠損値は NA に置き換えられました (初期レベル「NULL」から)。ただし、要因を表示すると、次のようになります。
head(SMOKE)
# N N <NA> Y Y N
# Levels: Y N
R が と表示NA
されるのはなぜ<NA>
ですか? そして、違いはありますか?
を扱っているfactors
場合、NA
が山括弧 ( <NA>
) で囲まれている場合、それは実際には NA であることを示します。
NA
括弧がない場合、それはNA ではなく、ラベルが"NA"
# Note a 'real' NA and a string with the word "NA"
x <- factor(c("hello", NA, "world", "NA"))
x
[1] hello <NA> world NA
Levels: hello NA world <~~ The string appears as a level, the actual NA does not.
as.numeric(x)
[1] 1 NA 3 2 <~~ The string has a numeric value (here, 2, alphabetically)
The NA's numeric value is just NA
R
"NA"
は、値が 2 文字の文字列と実際の欠損値を区別しようとしているだけNA
です。例:df
df$y
df <- data.frame(x=1:4, y=c("a", NA_character_, "c", "NA"), stringsAsFactors=FALSE)
NA の 2 つの異なるスタイルに注意してください。
> df
x y
1 1 a
2 2 <NA>
3 3 c
4 4 NA
ただし、「df$y」だけを見ると
[1] "a" NA "c" "NA"
ただし、引用符を削除すると (data.frame をコンソールに出力するときに表示されるものと同様):
print(df$y, quote=FALSE)
[1] a <NA> c NA
NA
したがって、角度付きブラケットを介しての区別が再びあります。
おそらく 1 つの例外は data.table かもしれません。文字フィールドでは < NA > と表示され、数値フィールドでは NA と表示されるようです。注: < NA > に余分なスペースを追加しました。そうしないと、この Web ページに適切に表示されませんでした。
library("data.table")
y<-data.table(a=c("a","b",NA))
print(y)
a
1: a
2: b
3: < NA >
factor(y$a)
[1] a b < NA >
Levels: a b
## we enter a numeric argument
y<-data.table(a=c(1,2,NA))
print(y)
a
1: 1
2: 2
3: NA
factor(y$a)
[1] 1 2 < NA >
Levels: 1 2