我需要在 R 中构造一个 mysql 查询,该查询必须在引号中包含日期。如何将其与粘贴功能一起使用并获得正确的引号?看来引号必须与粘贴一起使用,我无法将 R 对象放在引号内。
例如:
# 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 对象周围添加引号?
最佳答案
如果用双引号表示字符串开始和结束,则可以在字符串中使用单引号。
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])
关于r - 循环遍历日期以获取 R 数据库中每天的所有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22770706/