【问题标题】:grepl not working with devtools::load_all()grepl 不适用于 devtools::load_all()
【发布时间】:2019-01-30 14:50:31
【问题描述】:

我有以下功能,我将其包装在一个包中:

str_grepl <- function(data) {
  data <- as.data.table(data)
  data <- data[!grepl("^set", Species)]
  return(data)
}

当我运行此函数并将该函数应用于我的数据时,它工作正常。

library(data.table)

str_grepl(iris)
#>      Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
#>   1:          7.0         3.2          4.7         1.4 versicolor
#>   2:          6.4         3.2          4.5         1.5 versicolor
#>   3:          6.9         3.1          4.9         1.5 versicolor
#>   4:          5.5         2.3          4.0         1.3 versicolor
#>   5:          6.5         2.8          4.6         1.5 versicolor
#>   6:          5.7         2.8          4.5         1.3 versicolor

但是,当我使用 RStudio/devtools 创建包时,保存此函数并使用 load_all() 加载它时,该函数不起作用:

> str_grepl(iris)
 Error in grepl("^set", Species) : object 'Species' not found 

有趣的是,如果我安装包并加载它,它就可以工作。

devtools::install()
str_grepl(iris)
#>      Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
#>   1:          7.0         3.2          4.7         1.4 versicolor
#>   2:          6.4         3.2          4.5         1.5 versicolor
#>   3:          6.9         3.1          4.9         1.5 versicolor
#>   4:          5.5         2.3          4.0         1.3 versicolor
#>   5:          6.5         2.8          4.6         1.5 versicolor
#>   6:          5.7         2.8          4.5         1.3 versicolor

知道这是为什么吗?

我已将示例包放在 Github 上:https://github.com/filipwastberg/greplpackage

【问题讨论】:

  • 您能在这方面再扩展一点吗? “但是,当我使用 RStudio/devtools 创建一个包时,保存此函数并使用 load_all() 加载它,该函数不起作用。”我做了类似的事情,只是我将其描述为将函数保存在“greplpackage”包中,然后使用 devtools::load_all() 模拟安装和加载包。
  • 您的全局环境或搜索列表中的其他位置可能有一个名为 Species 的对象。
  • 这似乎是 Microsoft R Open 的问题,我将其用于 MLK 库。会不会是 Microsoft R Open 在全局环境或其他地方有一个对象Species?最好的检查方法是什么?
  • @akrun 我认为问题不在于 data.table。

标签: r string-matching devtools grepl


【解决方案1】:

正如@akrun 建议的那样,这里的问题是描述文件。添加后:

Imports: 
    data.table

问题消失了:

  library(data.table)
  devtools::load_all()
  iris <- iris

str_grepl(iris)
#>      Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
#>   1:          7.0         3.2          4.7         1.4 versicolor
#>   2:          6.4         3.2          4.5         1.5 versicolor
#>   3:          6.9         3.1          4.9         1.5 versicolor
#>   4:          5.5         2.3          4.0         1.3 versicolor
#>   5:          6.5         2.8          4.6         1.5 versicolor
#>   6:          5.7         2.8          4.5         1.3 versicolor

【讨论】:

    猜你喜欢
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2014-11-24
    • 1970-01-01
    • 2014-05-25
    • 2013-10-15
    • 2015-02-12
    相关资源
    最近更新 更多