如何将列表中dataframe的名称传递给sqldf?
我正在使用sqldf包注释几个数据帧。 注释数据位于数据框中。 我使用内部联接通过id值选择相应的信息 为了使流程自动化,我编写了以下代码:如何将列表中dataframe的名称传递给sqldf?,r,sqldf,R,Sqldf,我正在使用sqldf包注释几个数据帧。 注释数据位于数据框中。 我使用内部联接通过id值选择相应的信息 为了使流程自动化,我编写了以下代码: prepareAnnot <- function(x){ annoted <- sqldf("SELECT x.*, annot.* FROM x INNER JOIN annot ON x.id = annot.id;") return(annoted)} 如何正确地将列表中的数据帧名称传递给函数?我无法复制您的错误。另外,像这
prepareAnnot <- function(x){
annoted <- sqldf("SELECT x.*,
annot.*
FROM x INNER JOIN annot
ON x.id = annot.id;")
return(annoted)}
如何正确地将列表中的数据帧名称传递给函数?我无法复制您的错误。另外,像这样使用
assign()
也不是一个好主意。如果有一组相关的变量,最好将它们保存在一个列表中,这样就可以轻松地对它们执行向量化操作。这里有一个有效的例子
annot <- data.frame(id=1:10, n=letters[1:10])
prepareAnnot <- function(x) {
sqldf("select x.*, annot.n from x INNER JOIN annot ON x.id = annot.id")
}
myresults <- list(A=data.frame(id=1:3), B=data.frame(id=4:7))
annotated <- lapply(myresults, prepareAnnot)
annotated
以确保它们都是正确的数据帧。谢谢Flick先生!你的解决方案有效,我应该使用lappy函数。
Error in sqliteExecStatement(con, statement, bind.data) :
RS-DBI driver: (error in statement: no such table: x)
annot <- data.frame(id=1:10, n=letters[1:10])
prepareAnnot <- function(x) {
sqldf("select x.*, annot.n from x INNER JOIN annot ON x.id = annot.id")
}
myresults <- list(A=data.frame(id=1:3), B=data.frame(id=4:7))
annotated <- lapply(myresults, prepareAnnot)
annotated
sapply(myresults, class)