在嵌套列表中的元素位置上使用purrr吗?

时间:2019-05-13 23:31:41

标签: r tidyverse purrr

情况:下图中有一个嵌套列表。我想使用purrr遍历每个嵌套列表的第二个元素并应用日期转换功能。

nested list

问题:我可以轻松地编写一个for循环来对其进行迭代,但是我想将其与purrr一起使用。我的嵌套列表尝试还没有解决。正常列表可以,按位置嵌套,不可以。

Maurits Evers的可复制示例代码(谢谢!)

lst <- list(
    list("one", "12345", "2019-01-01"),
    list("two", "67890", "2019-01-02"))

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:4)

请参阅上面的注释,以了解如何提供包含示例数据的可重现示例。

由于您不提供示例数据,因此让我们创建一些最小的模拟数据,类似于您的屏幕快照中显示的内容。

lst <- list(
    list("one", "12345", "2019-01-01"),
    list("two", "67890", "2019-01-02"))

然后可以投射每个list元素as.Date的第三个元素

lst <- map(lst, ~{.x[[3]] <- as.Date(.x[[3]]); .x})

我们可以确认每个list元素的第三个元素是Date类型的对象

str(lst)
#List of 2
# $ :List of 3
#  ..$ : chr "one"
#  ..$ : chr "12345"
#  ..$ : Date[1:1], format: "2019-01-01"
# $ :List of 3
#  ..$ : chr "two"
#  ..$ : chr "67890"
#  ..$ : Date[1:1], format: "2019-01-02"

更新

purrr / tidyverse的规范方法是使用modify_at(感谢@ H1)

lst <- map(lst, ~modify_at(.x, 3, as.Date))

结果与以前相同。