如何从函数返回具有给定名称的data.frame?

时间:2010-10-28 10:11:32

标签: r lapply

假设我有一个函数从MySQL表中读取数据,对其进行操作并返回一些data.frame。请注意,该功能只是一个例子,其功能无关紧要......,例如:

addRowSd <- function(table,con,pattern="^Variable") {

dframe <- dbReadTable(con,table)
cn <- colnames(dframe)
qs <- subset(x, x  %in% grep(pattern, x, value=TRUE))
dframe$qsd <- sd(t(dframe[,c(qs)])) 

return(dframe)
}

mydf$sd <- addRowSd(...)

我最终得到一个名为mydf的data.frame。现在我想对SQL表名的字符向量这样做,并相应地命名返回的数据帧。如果我只是使用

x=lapply(MySQLtablenames,addRowSd,con)

我会得到一些名为x的列表。当然,我可以按照我喜欢的方式取消所有内容并重命名,但我的问题是:

如何使lapply(或其他类似函数)返回多个单数据帧或至少包含从我的字符向量“MySQLtablenames”派生的某些名称的列表?

2 个答案:

答案 0 :(得分:10)

我自己找到了答案:

assign("somename",dframe,envir = .GlobalEnv)

答案 1 :(得分:1)

如果你提供了一个字符向量,它会用提供的字符向量命名返回列表中的项目(USE.NAMES默认为TRUE)...我也会使用simplify = FALSE取决于data.frames返回你可能会得到不可预知的结果

x=sapply(MySQLtablenames,addRowSd,con, simplify=FALSE)