在 R 中,使用 read.csv.sql 读取特殊列

in R, read special columns with read.csv.sql

我正在尝试读取一个大的 csv 文件。事实上,我想要 select 一个使用名为 Race Color 的特殊列的子集。通过read.csv读取文件,我有head

library(sqldf)
df <-  read.csv(file = 'df.txt', header = T, sep = ";")
head(df)

id  Region  Race Color  .... 
 1       1          1
 2       1          1
 3       2          1
 4       3          2
 5       4          1
 6       4          1

我想使用 read.csv.sql 来 selecting df 的子集而不使用 read.csv 文件。例如,我希望所有种族颜色都等于 1 的人。 使用 read.csv.sql,我有类似

的东西
>df <- read.csv.sql("df.txt", sql = "select * from file where Race Color = 1", sep=";", header=T, eol="\n")

但是我有以下错误

Error in sqliteSendQuery(con, statement, bind.data) : 
error in statement: near "Color": syntax error

正在尝试

>df <- read.csv.sql("df.txt", sql = "select * from file where 'Race Color' = 1", sep=";", header=T, eol="\n")

我有零行的 df。

有什么解决办法吗?

R 在读入数据时自动将 . 添加到带有 space 的列名中以生成 Race.Color,但 . 在 sql,这样会搞砸的。

sqldf 中有一个内置方法,使用方括号 ([Race.Color]) 明确命名我们可以使用的列,这样我们就不会 运行 陷入该问题。您还可以使用转义引号:\"Race.Color\"

这应该有效:

library(sqldf)

read.csv.sql("test.csv", sql = "select * from file where [Race.Color] = 1", sep=";", header=T, eol="\n")