【发布时间】:2018-11-06 14:01:33
【问题描述】:
这段代码
> A <- data.frame(col1 = c(1,2,3),col2 = c("red","blue","green"))
> color_num <- 2
> fn$sqldf("select * from A where col1 >= '$color_num'")
产生错误
eval(parse(text = paste(..., sep = "")), env) 中的错误:对象 找不到“颜色”
但是,如果变量color_num 被赋予一个不带下划线的名称(例如colornum),那么执行fn$sqldf("select * from A where col1 >= '$colornum'") 会产生预期的结果而不会出现错误。
我相信sqldf 在幕后将下划线替换为句点,导致它将下划线前面的组件视为表格,将下划线后面的部分视为列名。 This answer(和 cmets)对sqldf 中关于列名的问题表示该库曾经用下划线替换了点,但现在不再这样做,但我找不到任何关于用点替换下划线的信息。
这是一个问题,因为我使用的命名约定大量使用下划线作为变量名。
有什么方法可以在 sqldf 查询中获取带有下划线的变量名?
【问题讨论】:
标签: r naming-conventions sqldf