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

发布于 2024-09-29 16:55:19 字数 651 浏览 2 评论 0原文

假设我有一个从 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 (或另一个类似的函数)返回多个单个数据帧或至少一个包含从我的字符向量派生的一些名称的列表“MySQL 表名”?

Assume I have a function that reads data from a MySQL table, manipulates it and returns some data.frame. Note the function is just an example whose functionality does not matter itself..., E.g.:

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(...)

I end up with a data.frame called mydf. Now I´d like to do to this to a character vector of SQL table names AND name the returned dataframes correspondingly. If I just use

x=lapply(MySQLtablenames,addRowSd,con)

I´ll get some list called x. Of course I could unlist and rename everything the way I´d like to, but my question is:

How can I make lapply (or another comparable function) return multple single dataframes or at least a list that contains some names derived from my character vector "MySQLtablenames"?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

太阳男子 2024-10-06 16:55:19

刚刚自己找到了答案:

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

just found an answer on my own:

assign("somename",dframe,envir = .GlobalEnv)
多彩岁月 2024-10-06 16:55:19

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

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

If you supply sapply a character vector, it will name the items in the returned list by the supplied character vector (USE.NAMES default to TRUE)... I would also use simplify=FALSE as depending on the data.frames returned you may get unpredictable results

x=sapply(MySQLtablenames,addRowSd,con, simplify=FALSE)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文