Разница между точечным (.) Местоимением и .data местоимением - PullRequest
0 голосов
/ 25 мая 2019

При сборке моего первого пакета R я запустил devtools::check(), что привело к следующему примечанию: no visible binding for global variable ‘.’

Чтобы исправить это, я попытался быть более явным и изменил любой экземпляр . на rlang::.data. Несмотря на то, что он исправил примечание devtools, он сделал функции, использующие его, для обеспечения неправильного вывода. Вот пример:

library(magrittr)
library(rlang)

# Creating df with missing values
iris_w_na <- head(iris)
iris_w_na[iris_w_na == 0.2] <- NA

### Replace missing values using .
# This works
iris_w_na %>% replace(is.na(.), -99)

# This doesn't
iris_w_na %>% replace(is.na(rlang::.data), -99)

# This won't work either
na_indexes <- iris_w_na %>% is.na(rlang::.data)

# But this will work
na_indexes <- iris_w_na %>% is.na(.)
iris_w_na %>% replace(na_indexes, -99)

В конечном итоге я вернулся к использованию . и решил записку devtools, поставив utils::globalVariables(".") в документации к пакету.

Однако мне все еще интересно узнать, каковы различия между . и .data и почему они ведут себя по-разному в вышеупомянутом примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...