用R中的查询替换表达式参数

时间:2015-04-12 09:05:08

标签: mysql regex r expression

我有一个表达式max(51)。我想将表达式中的参数(即51)替换为数据库中与此ID相关的值。所以我替换的表达式如下:

max(dbGetQuery(con,"SELECT VALUE FROM STUD WHERE ID=51"))

其中con是MySQL连接对象。 我已尝试以下方法从表达式

中提取参数
PARAMETER <- gsub(".*\\((.*)\\)$", "\\1", "MAX(51)");

现在我的最终表达式会变成这样:

max(dbGetQuery(con,"SELECT VALUE FROM STUD WHERE ID=PARAMETER"));

那么如何在R中完成这种替换呢?这只是一个操作数表达式。是否可以使用更复杂的表达式,如

max(51)+min(52)-53

谢谢..

1 个答案:

答案 0 :(得分:0)

我通过以下方式实现了这一目标:

operand <- "max(51)";
PARAMETER <- gsub(".*\\((.*)\\)$", "\\1", operand);
QUERY=gsub("PARAMETER",PARAMETER,"SELECT VALUE FROM STUD WHERE ID='PARAMETER'");
Final_SubExpression <- gsub(PARAMETER,"dbGetQuery(con,QUERY)",operand);
Result <- eval(parse(text=Final_SubExpression));
Result;

OR

operand <- "max(51)";
PARAMETER <- gsub(".*\\((.*)\\)$", "\\1", operand);
QUERY=sprintf("SELECT VALUE FROM STUD WHERE ID = '%s'", PARAMETER);
Final_SubExpression <- gsub(PARAMETER,"dbGetQuery(con,QUERY)",operand);
Result <- eval(parse(text=Final_SubExpression));
Result;