При сборке моего первого пакета 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
и почему они ведут себя по-разному в вышеупомянутом примере.