小编Jos*_*rop的帖子

使用 data.table 语法在 disk.frame 对象中进行非标准评估时出现问题

问题

我目前正在尝试编写一个函数,disk.frame使用正则表达式过滤对象的某些行。不幸的是,我在过滤器函数中评估搜索字符串时遇到了一些问题。我的想法是将正则表达式作为字符串传递到函数参数(例如storm_name)中,然后将该参数传递到我的过滤调用中。我使用%like%包含的函数{data.table}来过滤行。

我的问题是该storm_name对象在 disk.frame 内进行评估。但是,由于storm_name只包含在函数环境中,而不包含在 disk.frame 对象中,因此出现以下错误:

Error in .checkTypos(e, names_x) : 
  Object 'storm_name' not found amongst name, year, month, day, hour and 8 more
Run Code Online (Sandbox Code Playgroud)

我已经尝试storm_name使用 评估父框架中的对象eval(sotm_name, env = parent.env()),但这也没有帮助。有趣的是,这个问题只发生在{disk.frame}对象上,而不会发生在{data.table}对象上。

现在我找到了一个解决方案,使用{dplyr}它来代替。但是,如果您能提供有关如何解决此问题的任何想法,我将不胜感激{data.table}

可重复的例子

# Load packages
library(data.table)
library(disk.frame)

# Create data table and diskframe object of storm data
storms_df <- as.disk.frame(storms)
storms_dt <- as.data.table(storms)

# Create search …
Run Code Online (Sandbox Code Playgroud)

r data.table non-standard-evaluation disk.frame

5
推荐指数
1
解决办法
149
查看次数