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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。