7

假设我有一个从 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”派生的一些名称的列表?

4

2 回答 2

11

刚刚自己找到了答案:

assign("somename",dframe,envir = .GlobalEnv)
于 2010-10-28T10:24:05.110 回答
1

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

x=sapply(MySQLtablenames,addRowSd,con, simplify=FALSE)
于 2010-10-28T11:43:34.400 回答