使用box包时R函数无法识别数据框列变量的解决方法
解决box包下dplyr filter找不到数据框列的问题
这是因为box包的模块作用域改变了函数内的变量查找规则,dplyr的非标准求值默认会在函数环境里找verified,而不是自动关联到数据框的列。最简单的解决方法是用.data代词明确指定从数据框中取列,这也是tidyverse官方推荐的稳健写法:
修改后的代码如下:
box::use( tibble[...], dplyr[...], lubridate[...], r/core[...] ) myFunction <- function(df){ df = df %>% filter(.data$verified == TRUE) return(df) }
你也可以直接用df$verified替代.data$verified,效果一样,但.data的写法更符合tidyverse的代码风格,在复杂管道里可读性更强。
内容的提问来源于stack exchange,提问作者Mojimi
相关产品推荐
相关产品推荐

