chuck()
实现了 [[
的通用形式,允许您深入、灵活地索引数据结构。如果您尝试访问的索引不存在(或者是NULL
),它将抛出(即chuck)错误。
参数
- .x
-
向量或环境
- ...
-
用于索引对象的访问器列表。可以是正整数、负整数(从右侧索引)、字符串(从名称中索引)或访问器函数(仅支持名称和位置的赋值变体除外)。如果正在索引的对象是 S4 对象,则按名称访问它将返回相应的槽。
支持Dynamic dots。特别是,如果您的访问器存储在列表中,您可以将其与
!!!
拼接。
也可以看看
pluck()
是一个安静的等价物。
例子
x <- list(a = 1, b = 2)
# When indexing an element that doesn't exist `[[` sometimes returns NULL:
x[["y"]]
#> NULL
# and sometimes errors:
try(x[[3]])
#> Error in x[[3]] : subscript out of bounds
# chuck() consistently errors:
try(chuck(x, "y"))
#> Error in chuck(x, "y") : Can't find name `y` in vector.
try(chuck(x, 3))
#> Error in chuck(x, 3) :
#> Index 1 exceeds the length of plucked object (3 > 2).
相关用法
- R purrr compose 将多个函数组合在一起创建一个新函数
- R purrr accumulate 累积向量缩减的中间结果
- R purrr imap 将函数应用于向量的每个元素及其索引
- R purrr list_transpose 转置列表
- R purrr as_vector 将列表强制转换为向量
- R purrr map_if 有条件地将函数应用于向量的每个元素
- R purrr map2 映射两个输入
- R purrr array-coercion 强制数组列出
- R purrr auto_browse 包装一个函数,以便在出错时自动 browser()
- R purrr pluck 安全地获取或设置嵌套数据结构深处的元素
- R purrr insistently 将函数转换为等待,然后在错误后重试
- R purrr map_depth 在给定深度映射/修改元素
- R purrr list_simplify 将列表简化为原子或 S3 向量
- R purrr rerun 多次重新运行表达式
- R purrr quietly 包装一个函数来捕获副作用
- R purrr list_flatten 压平列表
- R purrr pmap 同时映射多个输入(“并行”)
- R purrr possibly 包装函数以返回值而不是错误
- R purrr head_while 查找全部满足谓词的头/尾。
- R purrr rbernoulli 从伯努利分布生成随机样本
- R purrr rate-helpers 创建延迟率设置
- R purrr keep_at 根据元素的名称/位置保留/丢弃元素
- R purrr keep 根据元素的值保留/丢弃元素
- R purrr transpose 转置列表。
- R purrr flatten 将列表的列表展平为简单的向量
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Get an element deep within a nested data structure, failing if it doesn't exist。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。