Как значения могут быть назначены на выход is.na ()? - PullRequest
0 голосов
/ 29 июня 2019

Следующее относится к языку R.

x1 <- c(1, 4, 3, NA, 7)
is.na(x1) <- which(x1 == 7)

Я не берусь, LHS в последней строке дает вам вектор логического значения, а RHS - это значение (индекс, где x == 7, 5 в данном случае). Так что же значит присвоить булевому вектору значение 5?

1 Ответ

0 голосов
/ 29 июня 2019

is.na из документов возвращает:

Метод по умолчанию для is.na, примененный к атомарному вектору, возвращает логический вектор такой же длины, что и его аргумент x, содержащий значение TRUE для этих элементов.помеченный NA или, для числовых или комплексных векторов, NaN и FALSE в противном случае.

Поэтому, создавая логический вектор (по сути, вы говорите, где индекс равен TRUE, это должно бытьNA.

«Сопоставляя» эти индексы с соответствующим индексом из which, вы превращаете последний в NA s везде, где FALSE отсюда и происходит изменение.

Для практического применения:

Это вывод из is.na(x1):

is.na(x1)
[1] FALSE FALSE FALSE  TRUE FALSE

Соответствующий вывод из which(x==7):

which(x1 == 7)
[1] 5

Объединение, элемент в позиции 5 теперь станет NA, потому что ему был присвоен логический is.na(), который возвращает TRUE

is.na(x1) <- which(x1 == 7)
 x1
[1]  1  4  3 NA NA

. Вышеуказанное превращает первый индекс вNA и appends еще два NA с, чтобы сделать индекс 7 и NA.

Это лучше всего видно по:

is.na(x1) <- c(1,7)
 x1
[1] NA  4  3 NA  7 NA NA

Сравните с этим примером из документов:

(xx <- c(0:4))
is.na(xx) <- c(2, 4)
 xx
[1]  0 NA  2 NA  4

Из приведенного выше ясно, что c (2,4) следует исходным индексам в xx, поэтому остальные становятся NA с.

...