[英]how to use purrr with lubridate
考慮這個簡單的例子
mydata
List of 3
$ : chr "11/12/2015"
$ : chr "21/10/2015"
$ : chr "04/09/2015"
我想將lubridate::dmy()
應用於此列表中的每個字符。 只需運行
mydata %>% map(., lubridate::dmy(.))
Error: Can't convert a double vector to function
產生一個錯誤。 我在這里想念什么? 謝謝!
這是錯誤的,因為.
在不同的上下文中意味着兩件事。 在管道中,它表示管道中的前一個對象,但在purrr
它可能是該對象進入要映射的函數的簡寫形式。 當包含~
時,它僅表示第二個。
上面的解決方案應該起作用,但是這些也應該起作用。 我認為您不需要包含.x = .
因為它是第一個參數,應該由管道傳遞。 同樣,使用可重現的示例更易於檢查。
mydata %>% map(function(x) dmy(x))
mydata %>% map(~ dmy(x))
這是因為您包含.
如果刪除,您的代碼就可以正常工作.
。 在那種情況下,您不必包括~
並指示purrr::map
將其視為函數,並且其參數包含在函數調用中。
請嘗試以下操作:
mydata %>%
purrr::map(.x = .,
.f = ~ lubridate::dmy(.))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.