转换为 posixct 失败

converting to posixct fails

> resulttable[3,1]
     UTC FORECAST TIME
1: 2018-05-01 00:30:00
> as.POSIXct(resulttable[3,1],format="%Y-%m-%d %H:%M:%S",tz="UTC")
Error in as.POSIXct.default(resulttable[3, 1], format = "%Y-%m-%d %H:%M:%S",  :       
do not know how to convert 'resulttable[3, 1]' to class “POSIXct”

没看懂报错,因为resulttable第一列格式为posixct

> lapply(resulttable,class)
$`UTC FORECAST TIME`
[1] "POSIXct" "POSIXt" 

$`UTC FORECAST RECEIVE TIME`
[1] "POSIXct" "POSIXt" 

为什么 as.POSIXct(resulttable[3,1],format="%Y-%m-%d %H:%M:%S",tz="UTC") 会导致错误?

编辑:这里是 str 的输出:

> str(resulttable[3,1])
Classes ‘data.table’ and 'data.frame':  1 obs. of  1 variable:
 $ UTC FORECAST TIME: POSIXct, format: "2018-05-01 00:30:00"
 - attr(*, ".internal.selfref")=<externalptr> 

注意 str(resulttable[3,1]) 的输出。它说它是 类 data.tabledata.frame 的对象。因此,您必须使用标准提取运算符提取要转换为 POSIXct 的一个或多个列。

resulttable[3, 1][[1]]                   # a vector
resulttable[3, 1]$`UTC FORECAST TIME`    # the same vector

请注意,列名称 UTC FORECAST TIME 中有空格,因此您需要将其放在反引号之间。
然后,为了进行转换,您可以使用上述任何一种形式。

as.POSIXct(resulttable[3,1][[1]], format = "%Y-%m-%d %H:%M:%S", tz = "UTC")
as.POSIXct(resulttable[3,1]$`UTC FORECAST TIME`, format = "%Y-%m-%d %H:%M:%S", tz = "UTC")