我有一个嵌套的数据帧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()
,但没有成功
你有什么主意吗?
答案 0 :(得分:0)
如果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