如何将列添加到monet.frame?

时间:2014-01-30 17:58:16

标签: r monetdb

如何将列添加到monet.frame - 对象?

E.g。如果我想向名为monet.frame的{​​{1}}添加一个简单的行ID,我可以通过执行以下操作来实现:

data

但必须有一个不那么黑客的方式。 如果您按照上面给出的方式执行此操作,例如,当您执行from <- gsub("^SELECT(.)+FROM", "", data$query) addid_query <- gsub("data", from, "SELECT *, ROW_NUMBER() OVER () AS id FROM data" attr(data, "query") <- addidquery id时,新创建的str(data) - 列不会显示,因为该信息在底层数据库更改---它是在names(data)初始化时生成的,而不是在调用这些acessor函数时生成的。它直接访问data行时会显示,因为查询会按照写入执行。

上面的东西还能安全吗?

更一般地说,我需要对我的data做一些超出包中可用功能的事情,并且有兴趣知道如何在{{{{{}上运行更一般的SQL查询1}},类似于monet.frame&#39; s monet.frame - 函数允许的内容。我很欣赏这方面的任何指示 - 我是否必须使用dplyr等,并将其结果转换为新的sql()?怎么样?


编辑:

NEVERMIND,应该更仔细地阅读本手册,我没有看到dbSendQuery接受可以解释为SQL查询的字符串以及已经在数据库中的表名。

这就是我现在要做的事情:

monet.frame

编辑2:如果应用于由monet.frame创建的#' Apply general SQL queries to a monet.frame object and return the #' result in a new monet.frame. #' #' @param data a \code{monet.frame} object #' @param query an SQL query, using "_DATA_" as the placeholder for the #' name of the table underlying the \code{data}-object. transform.monet.frame <- function(data, query){ nm <- paste(sample(letters, 15, rep=TRUE), collapse="") query <- gsub("_DATA_", paste("(", attr(data, "query"), ") AS", nm), query) monet.frame(attr(data, "conn"), query) } newdata <- transform(data, "SELECT *, ROW_NUMBER() OVER () AS id FROM _DATA_") 并且涉及ORDER,LIMIT或OFFSET语句的查询,则会中断。

0 个答案:

没有答案