gpt4 book ai didi

r - 使用purrr影响列表中每个数据框的单个列

转载 作者:行者123 更新时间:2023-12-04 05:23:00 26 4
gpt4 key购买 nike

仍然习惯于Purrr,我有一个我认为应该很容易的问题,但我不知道该怎么做。我要做的就是将下面的日期时间转换为带有as.Date()的日期。这是数据帧的列表。一直在玩,但是还没有找到可行的方法。任何帮助表示赞赏。

df <- data.frame(Date = seq.POSIXt(Sys.time(), Sys.time() + hours(24), by = "hour"),
useless = "ignore me")
df2 <- data.frame(Date = seq.POSIXt(Sys.time(), Sys.time() + hours(1), by = "min"),
useless = "ignore me")
mylist <- list(df,df2)
mylist %<>% map(?????)

最佳答案

达到目标的规范方法是将mapdplyr中的某些动词(例如mutate_at)结合起来。当前purrr仍然具有dmap_at函数,但是将来它将从purrr中删除。

因此,您可以在列表上使用map,然后使用mutate_at修改date列:

library(purrr)
library(lubridate)
library(dplyr)

mylist %>%
map(~mutate_at(.x, "Date", as.Date))

您还可以使用 at_depth,在 at_depth(1, ...)的情况下,它等于 map,因此不是必需的:

mylist %>%
at_depth(1, ~mutate_at(.x, "Date", as.Date))

保留在 purrr内的原始方法是使用 dmap_at:

mylist %>%
map(~dmap_at(.x, "Date", as.Date))

但是,由于我们现在有了 mutate_atmutate_all和 friend ,因此建议使用它们代替 dmapdmap_at等。

数据

df <- data.frame(Date = seq.POSIXt(Sys.time(), Sys.time() + hours(24), by = "hour"),
useless = "ignore me")
df2 <- data.frame(Date = seq.POSIXt(Sys.time(), Sys.time() + hours(1), by = "min"),
useless = "ignore me")
mylist <- list(df,df2)

关于r - 使用purrr影响列表中每个数据框的单个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43218462/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com