将蜱或撇号粘贴到R中的元素

时间:2013-06-24 23:01:24

标签: sql r date paste apostrophe

这似乎是一个非常愚蠢的问题,但我找不到任何关于它的事情

假设我有以下对象调用SQL连接

sql1 = na.omit(sqlQuery(con,paste("SELECT UNIX_TIMESTAMP(timestamp), rawPressure1, rawPressure2 FROM ",sensorname[[1]][1],"_Data WHERE timestamp > '2013-05-25 17:29:00' AND timestamp < '2013-06-10 15:33:00'", sep="")));

此声明可以完美地抓取我想要的所有数据等。但现在我想稍微自动化一下。

假设我有一个编译开始和结束时间的对象

 > flowobs <- na.omit(read.csv('FlowObs.csv', header=TRUE))

    Start                  Finish            FlowObs     Head
1   2013-05-25 17:29:00 2013-05-26 18:38:00 0.3307309   70.8750
2   2013-05-27 16:22:00 2013-05-28 20:15:00 0.3286909   72.1250
3   2013-05-29 13:05:00 2013-05-30 14:42:00 0.3211857   74.0000
4   2013-05-30 15:08:00 2013-06-03 11:54:00 0.3277443   75.0625
5   2013-06-05 12:13:48 2013-06-06 14:30:00 0.3490507   77.3125

现在让一个对象抓住数据集流程[[1]] [1]的范围(测试程序的开始),然后是结束流程[[2]] [长度(流程[[2] ]])]

 range <- c(paste(flowobs[[1]][1],sep = "'"),paste(flowobs[[2]][length(flowobs[[2]])],sep="'")

所以这就是我的问题所在。让我们回到SQL语法。

...WHERE timestamp > '2013-05-25 17:29:00' AND timestamp < '2013-06-10 15:33:00'", sep="")));

SQL语法要求日期在字符串周围有后退。

如果我们看一下对象范围的结构,你会期望

...WHERE timestamp > ",range[[1]]," AND timestamp < ",range[[2]], sep="")));"

这应该工作得很好......但事实并非如此。当我们查看范围对象的元素时,我们得到了它。

> range[[1]]

“2013-05-25 17:29:00”

不是这个

'2013-05-25 17:29:00'

有没有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

使用此:

"...WHERE timestamp > '",range[[1]],"' AND timestamp < '",range[[2]],"'", sep="")));"