首页 > 解决方案 > 从 Googlesheets 导入时,返回我无法在 R 中转换为日期的列表

问题描述

当我从 GoogleSheets 导入时,其中一个变量以列表形式出现。这是一个示例:

> dataset$my_date[1:4]
[[1]]
[1] "2019-06-25 UTC"

[[2]]
[1] "2019-06-25 UTC"

[[3]]
[1] "2019-06-25 UTC"

[[4]]
[1] "2019-06-25 UTC"

但是当我尝试将此列表转换为日期时,它返回给我:

> as.Date(dataset$my_date[1:4])
Error in as.Date.default(dataset$my_date[1:4]) : 
  do not know how to convert 'dataset$my_date[1:4]' to class “Date”

使用函数读取时,有没有办法将此变量设置为向量read_sheet()

标签: rgoogle-sheets

解决方案


它是一个list并且根据?as.Date

x - as.Date 方法接受字符串、因子、逻辑 NA 和类“POSIXlt”和“POSIXct”的对象

methods(as.Date)
#[1] as.Date.character   as.Date.default     as.Date.factor      as.Date.IDate       as.Date.numeric     as.Date.POSIXct    
#[7] as.Date.POSIXlt     as.Date.vctrs_sclr* as.Date.vctrs_vctr*

由于 没有list方法as.Date,我们需要将它们连接起来c以转换为vector(调用do.call

as.Date(do.call(c, dataset$my_date))

如果有NULL元素,将其转换为NA

dataset$my_data[sapply(dataset$my_data, is.null)] <- NA
as.Date(do.call(c, dataset$my_date))

或者使用unlist(如果它不是一个Datetime类,即一个character向量)

as.Date(unlist(dataset$my_date))

它可以用

lst1 <- list(Sys.time(), Sys.time())
as.Date(lst1)

as.Date.default(lst1) 中的错误:不知道如何将“lst1”转换为“日期”类</p>

通过转换为vector

as.Date(do.call(c, lst1))
#[1] "2020-09-13" "2020-09-13"

推荐阅读