如何解决在保持数据结构的同时使用`group_split`吗?
我正在使用osfr
包,我想将函数osf_ls_nodes
应用于数据中的每一行。
library(osfr)
library(dplyr)
library(purrr)
project_data =
osfr::osf_retrieve_user("qs9fc") %>%
osf_ls_nodes()
project_data %>% ## only applies to first element
osf_ls_files()
#> Warning: This is not a vectorized function. Only the first row of 10 will be
#> used.
#> # A tibble: 2 x 3
#> name id meta
#> <chr> <chr> <list>
#> 1 pre_analysis_plan.html 5e74e7554a60a50569bb5299 <named list [3]>
#> 2 pre_analysis_plan_amendment.docx 5ee79fa0af2627000d4f641c <named list [3]>
当我尝试使用tidyverse
使用典型的矢量化模式时,数据的结构会发生变化,这也行不通。
### When I attempt to vectorize the format changes
out <-
project_data %>%
mutate(n = row_number()) %>%
group_split(.keep = F) %>%
map(osf_ls_files)
#> Error in UseMethod("osf_ls_files"): no applicable method for 'osf_ls_files' applied to an object of class "c('tbl_df','tbl','data.frame')"
我可以看到一个明显的循环方法,但是我想知道是否可以在维护数据结构的同时使用group_split
或类似功能。
解决方法
我们可以使用for
循环
library(dplyr)
out <- vector('list',nrow(project_data))
for(i in seq_along(out)) {
out[[i]] <- project_data %>%
slice(i) %>%
osf_ls_files()
}
out1 <- bind_rows(out)
out1
# A tibble: 31 x 3
# name id meta
# <chr> <chr> <list>
# 1 pre_analysis_plan.html 5e74e7554a60a50569bb5299 <named list [3]>
# 2 pre_analysis_plan_amendment.docx 5ee79fa0af2627000d4f641c <named list [3]>
# 3 Analyses 5d85386ab3103d00185130b1 <named list [3]>
# 4 Appendix 5d8539fc51eeee0019bb9417 <named list [3]>
# 5 Program_2017.pdf 5eb4611e9ddd2800b6091b74 <named list [3]>
# 6 Materials shared by speakers 5eb4612d9ddd2800b70935cb <named list [3]>
# 7 Program_2018.pdf 5eb461f3877c5e00bf3a35b2 <named list [3]>
# 8 Program_2019.pdf 5eb46210877c5e00b93a46cb <named list [3]>
# 9 Program_2020.pdf 5eb46222877c5e00c03a4fb6 <named list [3]>
#10 Sample Implementations 5626656b8c5e4a103c6121dd <named list [3]>
# … with 21 more rows
或使用split
和map
library(purrr)
project_data %>%
split(seq_len(nrow(.))) %>%
map_dfr(osf_ls_files)
# A tibble: 31 x 3
# name id meta
# <chr> <chr> <list>
# 1 pre_analysis_plan.html 5e74e7554a60a50569bb5299 <named list [3]>
# 2 pre_analysis_plan_amendment.docx 5ee79fa0af2627000d4f641c <named list [3]>
# 3 Analyses 5d85386ab3103d00185130b1 <named list [3]>
# 4 Appendix 5d8539fc51eeee0019bb9417 <named list [3]>
# 5 Program_2017.pdf 5eb4611e9ddd2800b6091b74 <named list [3]>
# 6 Materials shared by speakers 5eb4612d9ddd2800b70935cb <named list [3]>
# 7 Program_2018.pdf 5eb461f3877c5e00bf3a35b2 <named list [3]>
# 8 Program_2019.pdf 5eb46210877c5e00b93a46cb <named list [3]>
# 9 Program_2020.pdf 5eb46222877c5e00c03a4fb6 <named list [3]>
#10 Sample Implementations 5626656b8c5e4a103c6121dd <named list [3]>
# … with 21 more rows
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。