r - 将嵌套的tibble转换为R中的字符向量
问题描述
我有一个嵌套的数据框tb
,如下所示:
>tb
# A tibble: 26 x 3
league fdj_data five38_data
<chr> <list> <list>
1 Ch.D1 Danemark <tibble [14 x 1]> <tibble [14 x 1]>
2 Ch.D1 Ecosse <tibble [10 x 1]> <tibble [14 x 1]>
3 Ligue 2 <tibble [20 x 1]> <tibble [19 x 1]>
4 Serie B <tibble [18 x 1]> <tibble [21 x 1]>
5 Liga Segunda <tibble [20 x 1]> <tibble [20 x 1]>
6 Ch.D1 Pays-Bas <tibble [18 x 1]> <tibble [21 x 1]>
7 Ch.D1 Grèce <tibble [12 x 1]> <tibble [16 x 1]>
8 Ch.D1 Suède <tibble [16 x 1]> <tibble [19 x 1]>
9 Ch.D1 Turquie <tibble [18 x 1]> <tibble [21 x 1]>
10 Ch.D1 Russie <tibble [14 x 1]> <tibble [19 x 1]>
# ... with 16 more rows
我还有一个函数(我们称之为func
),它需要 2 个字符向量(可能具有不同的长度)并输出另一个字符向量(与第一个 arg 长度相同)
我想为每一行添加另一列,func(fdj_data, five38_data)
我试过了
tb %>%
mutate(new_var = func(fdj_data, five38_data))
和
tb %>%
mutate(fdj_data = as.character(fdj_data),
five38_data = as.character(five38_data)) %>%
mutate(new_var = func(fdj_data, five38_data))
但两者都不起作用。我也尝试过,purrr::map()
但没有更成功
你有什么想法吗?
解决方案
func
如果您的矢量化正确,您应该不会遇到任何问题。请看下面的例子:
library(tibble)
library(dplyr)
set.seed(123)
func <- function(fdj_data, five38_data) {
sample(LETTERS, length(fdj_data), replace = TRUE)
}
tb <- tibble(league = paste0(sample(letters, 26, replace = TRUE), 1:26))
tb$fdj_data <- lapply(sample(10:22, 26, replace = TRUE), function(x)tibble(rnorm(x)))
tb$five38_data <- lapply(sample(10:22, 26, replace = TRUE), function(x)tibble(rnorm(x)))
tb
tb %>%
mutate(new_var = func(fdj_data, five38_data))
输出:
# A tibble: 26 x 4
league fdj_data five38_data new_var
<chr> <list> <list> <chr>
1 h1 <tibble [17 x 1]> <tibble [14 x 1]> C
2 u2 <tibble [17 x 1]> <tibble [19 x 1]> U
3 k3 <tibble [13 x 1]> <tibble [10 x 1]> F
4 w4 <tibble [11 x 1]> <tibble [20 x 1]> R
5 y5 <tibble [22 x 1]> <tibble [16 x 1]> L
6 b6 <tibble [21 x 1]> <tibble [19 x 1]> F
7 n7 <tibble [18 x 1]> <tibble [18 x 1]> Z
8 x8 <tibble [20 x 1]> <tibble [17 x 1]> L
9 o9 <tibble [10 x 1]> <tibble [19 x 1]> A
10 l10 <tibble [16 x 1]> <tibble [18 x 1]> Y
# ... with 16 more rows
推荐阅读
- javascript - 当第二次单击元素时,如何“反转” CSS 过渡?
- node.js - 如何在 azure devops 管道中为节点 js 构建作业设置环境变量
- javascript - javascript和设计模式中的复杂计时器
- powerbi - DAX 中的重复表
- mysql - MySQL - 从另一个表的 GROUP BY 查询中从一个表中获取关联的值列表
- python - 如何在 Python 中的二维数组中添加元素
- java - 枚举 NullPointerException Java
- javascript - 是否可以在 Vuex/(Vue 数据) 中存储自定义类的实例?
- ios - 如何正确跳过 2 ViewController
- java - 两个不同的处理器写入 Java Spring 批处理中的单个写入器