r - 将列表列转换为字符串列
问题描述
我的数据由一个标识符 (srdr_id) 和一个列表列组成。
dat <- structure(list(srdr_id = c("174136", "174258", "174684"), outcomes = list(
structure(list(outcome_s = c("use_alcohol", "use_cannabis",
"use_cocaine")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-3L)), structure(list(outcome_s = "use_methamphetamine"), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -1L)), structure(list(
outcome_s = c("use_alcohol", "use_heavy")), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -2L)))), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -3L))
> dat
# A tibble: 3 x 2
srdr_id outcomes
<chr> <list>
1 174136 <tibble [3 x 1]>
2 174258 <tibble [1 x 1]>
3 174684 <tibble [2 x 1]>
我想将结果中的每个小标题转换为单个逗号分隔的字符串。
解决方案
您还可以使用map
函数来遍历列表列,拉出每个小标题的第一列并折叠成一个字符串:
library(tidyverse)
dat <- structure(list(srdr_id = c("174136", "174258", "174684"), outcomes = list(structure(list(outcome_s = c("use_alcohol", "use_cannabis", "use_cocaine")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -3L)), structure(list(outcome_s = "use_methamphetamine"), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -1L)), structure(list(outcome_s = c("use_alcohol", "use_heavy")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -2L)))), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -3L))
dat %>%
mutate(outcomes = map_chr(outcomes, ~ .[[1]] %>% str_c(collapse = ", ")))
#> # A tibble: 3 x 2
#> srdr_id outcomes
#> <chr> <chr>
#> 1 174136 use_alcohol, use_cannabis, use_cocaine
#> 2 174258 use_methamphetamine
#> 3 174684 use_alcohol, use_heavy
由reprex 包(v0.2.1)于 2019 年 5 月 13 日创建
推荐阅读
- azure - 使用 Key Vault 管理其密钥的 Azure 存储帐户
- sql - 如何按顺序检查组联合的可能性
- python - 在 QWizardPage 上获取 QTreeView 以正确更新
- python - 如何在 Python 中捕获对列表项的直接引用以提高速度?
- javascript - 使用 React 单击按钮时在 div 上显示返回的对象
- javascript - 如何在 JSON 中查找键的值
- zend-framework - 使用相同 Zend 框架 3 库的多个应用程序
- ruby-on-rails - 我的范围有什么问题,ruby on rails?
- machine-learning - 将文本avg_word编码为vec后如何获取feature_names?
- python-3.x - 具有导出 Keras 模型的 StandardScaler