点(。)代词和.data代词之间的区别

时间:2019-05-25 15:17:19

标签: r rlang

在构建我的第一个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之间的区别是什么,以及为什么它们在上述示例中的行为有所不同。

0 个答案:

没有答案