R - 使用 Map() 进行类型转换

R - Type Casting With Map()

我想创建一个新列,将时间戳中的小时提取为数字数据类型。如果我有一个数据框或 tibble,我会按如下方式进行:

calories_hourly$activity_hour_num <- calories_hourly$activity_hour %>% mdy_hms() %>% format(format = ('%H')) %>% as.numeric()

但是,我有一个名为“fitbit_data”的 18 个 tibbles 列表,我想在其中对 tibbles 6-16 执行上述操作。类型转换是从我所有 tibbles 中的第二列计算得出的。我在下面有一个失败尝试开始的例子:

fitbit_data[6:16] <- fitbit_data[6:16] %>% mutate(activity_hour_num=map(.x=fitbit_data[6:16], .f=~mdy(.x[2])))

你能帮我为这个 R 任务编写一个整洁的解决方案吗?

非常感谢!

您可以将 map 用作 -

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

k <- 6:16

fitbit_data[k] <- map(fitbit_data[k], ~{.x[[2]] <- lubridate::mdy(.x[[2]]);.x})

基于你能做的第一次尝试-

fitbit_data[k] <- map(fitbit_data[k], ~.x %>% 
                        mutate(activity_hour = mdy_hms(activity_hour) %>% 
                                               format('%H') %>% as.numeric()))