gpt4 book ai didi

r - Tibble:对列表列的操作

转载 作者:行者123 更新时间:2023-12-02 09:16:56 25 4
gpt4 key购买 nike

我有以下问题:

temp <- structure(list(x = list(1:10, 1:10), y = list(c(3L, 9L, 10L, 
8L, 1L), c(1L, 3L, 5L, 2L, 4L))), .Names = c("x", "y"), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -2L))


> temp
# A tibble: 2 x 2
x y
<list> <list>
1 <int [10]> <int [5]>
2 <int [10]> <int [5]>

我想创建一个新列 z ,它是 xy 列中列表元素的 setdiff,例如temp$z 应该输出为:

> temp$z
[[1]]
[1] 2 4 5 6 7

[[2]]
[1] 6 7 8 9 10

并且 temp 将更新为:

> temp
# A tibble: 2 x 3
x y z
<list> <list> <list>
1 <int [10]> <int [5]> <int [5]>
2 <int [10]> <int [5]> <int [5]>

PS:dplyr 解决方案会很棒! :-)

最佳答案

您可以在 mutate 中使用 Map:

temp %>% mutate(z=Map(setdiff, x, y))
# # A tibble: 2 x 3
# x y z
# <list> <list> <list>
# 1 <int [10]> <int [5]> <int [5]>
# 2 <int [10]> <int [5]> <int [5]>

temp %>% mutate(z=Map(setdiff, x, y)) %>% pull(z)
# [[1]]
# [1] 2 4 5 6 7
#
# [[2]]
# [1] 6 7 8 9 10

关于r - Tibble:对列表列的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46162747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com