让我们举个例子,我有一个部门列表。他们每个人都在一个单独的名为“ departmentName”的表上,因此我以这种方式创建了一个列表。
depts <- c("financial","sales",.....)
然后通过这种方式迭代以获取成员以创建函数:
get.employees <- function(tablename) {
con <- DBI::dbConnect(connectiondata....)
query <- glue::glue("select name,position,area from {tablename}")
assign(tablename,
dplyr::tbl(conn, sql(query)) %>% collect())
}
lapply(depts,get.employees)
它可以正常工作,但是它返回了一个数据帧列表,没有像我期望的那样为每个元素分配名称。
我需要每个命名为部门名称的数据框。
答案 0 :(得分:1)
1)简化示例以在笔记的末尾使用session.query(Child).options(joinedload(Child.parent)).all()
和get.employees
,我们可以使用depts
代替Map
:
lapply
2)也可以:
L <- Map(get.employees, depts)
names(L)
## [1] "finance" "sales"
简化示例:
L2 <- sapply(depts, get.employees, simplify = FALSE)
names(L2)
## [1] "finance" "sales"
答案 1 :(得分:0)
您也可以尝试-
> ls <- mapply(get.employees, depts,SIMPLIFY = F)
> names(ls)
[1] "finance" "sales"
注意-输入数据来自@G提供的答案。格罗腾德里克