imap(x, ...)
是一個索引映射,如果 x
有名稱,則為 map2(x, names(x), ...)
的簡寫形式,如果沒有名稱,則為 map2(x, seq_along(x), ...)
的簡寫形式。如果您需要計算元素的值和位置,這非常有用。
用法
imap(.x, .f, ...)
imap_lgl(.x, .f, ...)
imap_chr(.x, .f, ...)
imap_int(.x, .f, ...)
imap_dbl(.x, .f, ...)
iwalk(.x, .f, ...)
參數
- .x
-
列表或原子向量。
- .f
-
一個函數,通過以下方式之一指定:
-
命名函數,例如
paste
。 -
匿名函數,例如
\(x, idx) x + idx
或function(x, idx) x + idx
。 -
一個公式,例如
~ .x + .y
。您必須使用.x
來引用當前元素,並使用.y
來引用當前索引。僅當您需要向後兼容舊版本的 R 時才推薦。
-
- ...
-
傳遞給映射函數的附加參數。
我們現在通常建議不要使用
...
將附加(常量)參數傳遞給.f
。相反,使用簡寫匿名函數:# Instead of x |> map(f, 1, 2, collapse = ",") # do: x |> map(\(x) f(x, 1, 2, collapse = ","))
這使得更容易理解哪些參數屬於哪個函數,並且往往會產生更好的錯誤消息。
例子
imap_chr(sample(10), paste)
#> [1] "5 1" "7 2" "2 3" "3 4" "1 5" "10 6" "8 7" "6 8" "9 9" "4 10"
imap_chr(sample(10), \(x, idx) paste0(idx, ": ", x))
#> [1] "1: 5" "2: 3" "3: 8" "4: 6" "5: 10" "6: 1" "7: 2" "8: 7"
#> [9] "9: 4" "10: 9"
iwalk(mtcars, \(x, idx) cat(idx, ": ", median(x), "\n", sep = ""))
#> mpg: 19.2
#> cyl: 6
#> disp: 196.3
#> hp: 123
#> drat: 3.695
#> wt: 3.325
#> qsec: 17.71
#> vs: 0
#> am: 0
#> gear: 4
#> carb: 2
相關用法
- R purrr insistently 將函數轉換為等待,然後在錯誤後重試
- R purrr accumulate 累積向量縮減的中間結果
- 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 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 將列表的列表展平為簡單的向量
- R purrr every 列表中的每個元素、部分元素還是沒有一個元素滿足謂詞?
- R purrr detect 查找第一個匹配的值或位置
注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Apply a function to each element of a vector, and its index。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。