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

Mat*_*ert 7 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(...)
Run Code Online (Sandbox Code Playgroud)

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

x=lapply(MySQLtablenames,addRowSd,con)
Run Code Online (Sandbox Code Playgroud)

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

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

Mat*_*ert 11

我自己找到了一个答案:

assign("somename",dframe,envir = .GlobalEnv)
Run Code Online (Sandbox Code Playgroud)

  • 在两个示例中,您都将DF插入到列表中(或者`lapply`返回一个列表).在这些情况下,作为DF的对象的名称是无关紧要的,是不是.什么问题是列表组件的`names`.如果我这样做,我会将DF存储在一个列表中,根据Marek上面的评论在表名后面的列表中设置名称,然后使用列表.如果要按名称引用各个DF,请使用`with(x,DF.name)`其中`x`是`lapply`返回的列表,`DF.name`是要访问的DF的名称或某些功能适用于它. (2认同)