gpt4 book ai didi

r - purrr 与 pluck 相对(丢弃元素)+ 在 pluck 中保留列表结构

转载 作者:行者123 更新时间:2023-12-02 00:53:41 25 4
gpt4 key购买 nike

假设有一个列表如下:

x <- list(a = list(a1 = 1, a2 = 2), b = list(a2 = 3, a1 = 4))

位置/名称混合在子列表中,并取出 a1 s 从列表中,我会在 purrr 中执行以下操作.
x %>% map(purrr::pluck, "a1")
$`a`
[1] 1

$b
[1] 4

为了扔掉一个元素而不是保留它,我进行了一些实验,并提出了以下内容(我在这里扔掉了 a2)。
x %>% map(purrr::assign_in, "a2", value = NULL)
$`a`
$`a`$`a1`
[1] 1


$b
$b$`a1`
[1] 4

在采摘方面,我实际上更喜欢第二种风格——也就是说,保持列表索引结构不变,同时只返回我想要的元素。所以我更喜欢一旦我执行 x %>% map(purrr::pluck, "a1") ,我得到第二个结果。

或者,也许有更好的方法可以在 purrr 中扔掉物体我不知道,以便两个代码的输出样式(拔出,扔掉)保持一致?

最佳答案

如果我们需要一致的方法,请使用 keep

library(purrr)
map(x, ~ keep(.x, names(.x) == "a1"))
#$a
#$a$a1
#[1] 1


#$b
#$b$a1
#[1] 4

discard
map(x, ~ discard(.x, names(.x) == "a1"))
#$a
#$a$a2
#[1] 2


#$b
#$b$a2
#[1] 3

关于r - purrr 与 pluck 相对(丢弃元素)+ 在 pluck 中保留列表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55987917/

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