2013-09-26 25 views
2

我有一個數據框,其中某些列名是格式的。格式。對於例如:Company.1 當我使用該列在sqldf功能,它拋出一個錯誤如何處理R中sqldf不支持的列名稱

data=sqldf(select Company.1 from test) 
Error in sqliteExecStatement(con, statement, bind.data) : 
RS-DBI driver: (error in statement: near ".1": syntax error) 

任何解決方法,這樣,因爲它是我可以使用列名?

回答

4

該點在SQL中具有其他含義(例如,將表名與列名分開),並且在將數據發送到SQLite之前將 替換爲下劃線。

library(sqldf) 
test <- data.frame("Company.1" = 1:10) 
sqldf('SELECT Company_1 FROM test') 
+4

在一年後添加。請注意,最新版本的RSQLite不再用下劃線替換點。 –

+2

@ G.Grothendieck如何處理這樣的情況呢? – user4786271

+6

將名稱放在雙引號中:'sqldf('SELECT'Company.1「FROM test')'。這也適用於:'sqldf('SELECT [Company.1] FROM test')' –

1

這個問題是有關您的列名的.,如果將其更改爲Company_1它的工作原理:

data = sqldf("select Company_1 from test") 
1

sqldf最新更新的解決方案回答here

我們只需要在單引號和 列名之間編寫SQL語句,包括雙引號之間的點s或 反向/反向引用可互換。