T
в конце для аргумента na.rm
. Лучше прописать TRUE
вместо T
, поскольку невозможно присвоить TRUE
в качестве имени объекта, тогда как T
может быть назначено, и это может привести к ошибочным ситуациям
sum(is.na(bollywood, na.rm = TRUE)
Здесь нет необходимости в na.rm
, поскольку is.na
возвращает только TRUE / FALSE в качестве вывода в зависимости от того, имеет ли элемент объекта NA
или нет. sum
даст сумму всех ИСТИННЫХ элементов (TRUE
- 1, FALSE
- 0)
Используя небольшой воспроизводимый пример
bollywood <- c('a', 'b', NA, 'd', NA)
is.na(bollywood)
#[1] FALSE FALSE TRUE FALSE TRUE
здесь, там два NA
с, поэтому sum
возвращает 2
sum(is.na(bollywood))
#[1] 2
Теперь мы определяем объект T
T <- 5
sum(is.na(bollywood), T)
#[1] 7
Итак, здесь он добавляет 2 с T вместо этого значение 5
должно быть
sum(is.na(bollywood), na.rm = TRUE)
#[1] 2
Как отмечалось выше, na.rm
вообще не требуется. Если мы проверим документацию ?sum
, используется
sum(..., na.rm = FALSE)
, т.е. ...
может принимать несколько аргументов, поэтому is.na(bollywood)
будет первым аргументом, T
(созданный объект) второй аргумент и т. д.