如何从函数返回具有给定名称的 data.frame?
假设我有一个从 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
刚刚自己找到了答案:
just found an answer on my own:
如果您提供 sapply 字符向量,它将通过提供的字符向量命名返回列表中的项目(USE.NAMES 默认为 TRUE)...我还会使用 simple=FALSE,因为根据返回的 data.frames 您可以得到不可预测的结果
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