簡體   English   中英

如何將purrr與lubridate一起使用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM