繁体   English   中英

替换R中的文本文件中的字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM