我需要在R中构造一个必须在引号中包含日期的mysql查询。如何在粘贴功能中使用它并获得正确的引号?似乎引号的方式必须与paste一起使用,我不能让R opbject在引号内。
例如:
# set the beginning and ending dates for the year 2013
date <- as.Date('2013/01/01',format = "%Y/%m/%d")
date2 <- as.Date('2013/12/31',format = "%Y/%m/%d")
# create a sequence of every day in this year
s <- seq(date,to = date2, by='days')
# loop through all 365 days in the year to get a query for each day
for (i in 1:365) {
query <- paste0('select ID, Name, Account, FROM Table WHERE Date = ',s[[i]])
}
这会产生以下查询(其中一天):
"select ID, Name, Account, FROM Table WHERE Date = 2013-01-01"
但是mySql要求日期是这样的(日期周围有引号)
"select ID, Name, Account, FROM Table WHERE Date = '2013-01-01'"
如何让粘贴函数在R对象周围放置引号?
答案 0 :(得分:2)
如果用双引号表示字符串start和stop,则可以在字符串中使用单引号。
paste0("select ID, Name, Account, FROM Table WHERE Date = '", s[[i]], "'")
应该工作得很好。
作为旁注,为了在字符串中间插入内容,我发现sprintf()
比paste
更具可读性。此外,您的s
对象只是日期的向量,因此您不需要双括号(尽管它们也不会受到伤害)。
sprintf("select ID, Name, Account, FROM Table WHERE Date = '%s'", s[i])