按名称删除列表的元素

标签 r tidyverse

我正在处理一个很长的命名列表,我正在尝试在 tidyverse 上下文中保留/删除与某个名称匹配的元素,类似于

dplyr::select(contains("pattern"))

但是,我在弄清楚它时遇到了问题。
library(tidyverse)

a_list <- 
  list(a = "asdfg",
       b = "qwerty",
       c = "zxcvb")

a_list %>% pluck("a") # works
a_list %>% pluck(contains("a")) #does not work

a_list[2:3] # this is what I want
a_list %>% pluck(-"a") # but this does not work

最佳答案

要按名称删除,您可以使用:

a_list %>% purrr::list_modify("a" = NULL)
$`b`
[1] "qwerty"

$c
[1] "zxcvb"

我不确定其他答案是否使用元素的名称,而不是元素本身进行选择。你给出的例子有点令人困惑,因为元素“a”的值都包含“a”并且被称为“a”。所以很容易混淆。为了显示差异,我将稍微修改示例。
b_list <- 
  list(a = "bsdfg",
       b = "awerty",
       c = "zxcvb")

b_list %>% purrr::list_modify("a" = NULL)

返回
$`b`
[1] "awerty"

$c
[1] "zxcvb"


purrr::discard(b_list,.p = ~stringr::str_detect(.x,"a"))

返回
$`a`
[1] "bsdfg"

$c
[1] "zxcvb"

关于按名称删除列表的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48467884/

相关文章:

r - 使用 tidy_eval/rlang 上下文将函数作为参数传递

r - 不运行因子列的情况

从宽变量组 reshape 到长变量组

r - R将类型因子的所有列更改为数值

r - dplyr 中的选择函数出错

r - tidyverse 中跨多列的字符串替换

r - 如何从 R 中的大型固定宽度文件中读取特定列

r - ggplot2 中的希腊字符适用于 png 但不适用于 svg 文件格式

r - 带有滚动连接的 data.table 计算平均日期条件

r - 为每个组添加行