R 将中列表中数据帧的每列转换为as.POSIXct

R 将中列表中数据帧的每列转换为as.POSIXct,r,R,我有一个数据帧列表,我想将其转换为数据帧中的每一列,并转换为时间戳 gg=list(a = data.frame(X1 = c(1516087622, 1516087622, 1516087622, 1516087622, 1516087622), X2 = c(1516087622, 1516087622, 1516087622, 1516087622, 1516087622)),b = data.frame(X1 = c(1516078740, 1516078740, 151607874

我有一个数据帧列表,我想将其转换为数据帧中的每一列,并转换为时间戳

gg=list(a = data.frame(X1 = c(1516087622, 1516087622, 1516087622, 1516087622, 
1516087622), X2 = c(1516087622, 1516087622, 1516087622, 1516087622, 
1516087622)),b = data.frame(X1 = c(1516078740, 1516078740, 1516078740, 1516078740, 
1516078740), X2 = c(1516078740, 1516078740, 1516078740, 1516078740, 
1516078740)))

> gg
$a
          X1         X2
1 1516087622 1516087622
2 1516087622 1516087622
3 1516087622 1516087622
4 1516087622 1516087622
5 1516087622 1516087622

$b
          X1         X2
1 1516078740 1516078740
2 1516078740 1516078740
3 1516078740 1516078740
4 1516078740 1516078740
5 1516078740 1516078740
我正在使用以下函数

Map(as.POSIXct,lapply(gg,function(x) x[[1]]),origin = "1970-01-01")
它转换每个数据帧的第一列 但是我想一次把所有的都转换成

我需要基R函数


谢谢。

这里有一个带有
tidyverse
的选项。我们通过
list
元素
map
,并使用
mutate\u all
将所有列更改为
POSIXct

library(dplyr)
library(purrr)
map(gg, ~ .x %>% 
            mutate_all(funs(as.POSIXct(., origin = "1970-01-01"))))
#$a
#                   X1                  X2
#1 2018-01-16 12:57:02 2018-01-16 12:57:02
#2 2018-01-16 12:57:02 2018-01-16 12:57:02
#3 2018-01-16 12:57:02 2018-01-16 12:57:02
#4 2018-01-16 12:57:02 2018-01-16 12:57:02
#5 2018-01-16 12:57:02 2018-01-16 12:57:02

#$b
#                   X1                  X2
#1 2018-01-16 10:29:00 2018-01-16 10:29:00
#2 2018-01-16 10:29:00 2018-01-16 10:29:00
#3 2018-01-16 10:29:00 2018-01-16 10:29:00
#4 2018-01-16 10:29:00 2018-01-16 10:29:00
#5 2018-01-16 10:29:00 2018-01-16 10:29:00


相应的
base R
选项是使用
Map
循环遍历
列表
元素,然后使用
lappy
循环遍历数据集的每一列,并将转换后的值分配给数据集(
x[]谢谢您的解释。@akrun在使用上述函数时,我们如何更改所选列(如第二列)。@user7462639您的意思是说,在这种情况下,
Map(函数(x){x[,2]
Map(function(x) {x[] <- lapply(x, as.POSIXct, origin = "1970-01-01");x }, gg)