[英]replace string in text file in R
如果我读入R中的文本文件,我想根据某种模式替换该文本文件中的字符串。 例如,创建一个函数调用它:replace(query,pattern,param),它基本上搜索整个查询并将任何出现的模式替换为param。 例如,
select * FROM
from Meds_EDW
WHERE Meds_EDW.Medication_Start_Date < to_date('pattern', 'MM/DD/YYYY')
然后R中会有一个函数读取该输入文件并将'pattern'替换为日期。
我想运行某种循环,它将运行此sql输入文件多个日期。
您可能正在寻找sprintf(...)
template <- "select * FROM from Meds_EDW WHERE Meds_EDW.Medication_Start_Date < to_date('%s', 'MM/DD/YYYY')"
query <- sprintf(template, "01/01/2014")
query
# [1] "select * FROM from Meds_EDW WHERE Meds_EDW.Medication_Start_Date < to_date('01/01/2014', 'MM/DD/YYYY')"
dates <- c("01/01/2014","02/01/2014","03/01/2014")
for (date in dates) print(sprintf(template,date))
# [1] "select * FROM from Meds_EDW WHERE Meds_EDW.Medication_Start_Date < to_date('01/01/2014', 'MM/DD/YYYY')"
# [1] "select * FROM from Meds_EDW WHERE Meds_EDW.Medication_Start_Date < to_date('02/01/2014', 'MM/DD/YYYY')"
# [1] "select * FROM from Meds_EDW WHERE Meds_EDW.Medication_Start_Date < to_date('03/01/2014', 'MM/DD/YYYY')"
请注意使用%s
作为字符串的占位符。 有关其他选项,请参阅文档。
如果您已经在使用sqldf
(加载gsubfn
),那么这也可以使用:
library(sqldf)
template <- "select * FROM from Meds_EDW WHERE Meds_EDW.Medication_Start_Date < to_date('$date.var', 'MM/DD/YYYY')"
date.var <- "01/01/2014"
fn$identity(template)
# [1] "select * FROM from Meds_EDW WHERE Meds_EDW.Medication_Start_Date < to_date('01/01/2014', 'MM/DD/YYYY')"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.