如何制作POSIXct的空向量

use*_*875 21 r posixct

我想制作一个空的矢量,POSIXct以便我可以放入POSIXct其中:

vec <- vector("POSIXct", 10)
vec
vec[1] <- "2014-10-27 18:11:36 PDT"
vec
Run Code Online (Sandbox Code Playgroud)

这不起作用.有任何想法吗?

Ric*_*ven 23

由于没有POSIX mode,因此无法单独初始化POSIXct矢量vector()(?mode有关所有模式类型的列表,请参阅参考资料).

但我们可以用来.POSIXct从字符向量创建向量.

(x <- .POSIXct(character(10))) ## the same as .POSIXct(vector("character", 10))
# [1] NA NA NA NA NA NA NA NA NA NA
class(x)
# [1] "POSIXct" "POSIXt" 
Run Code Online (Sandbox Code Playgroud)

另请注意,您还可以使用.POSIXct(integer(10))长度为10的原始日期时间向量.

  • 对于未来的观众,我会注意到****包括`.POSIXct(integer(10))`,它可用于数学运算,尽管答案中没有明确说明. (3认同)
  • 这很简洁,但它依赖于`.POSIXct` 中的解析失败。更简单(也可能更清晰)是`.POSIXct(rep(NA, 10))` (2认同)
  • 通过解析失败,我的意思是`character(10)`生成一个由10个空字符串组成的向量,而不是10个NA,因此生成的结构有效,因为“”被打印为NA。rep解决方案生成一个逻辑向量,该逻辑向量将被提升为数字。这意味着`x + 3600`这样的操作会产生奇怪的错误。 (2认同)

Gre*_*gor 6

我通常将事情初始化为NA:

as.POSIXct(rep(NA, 10))
Run Code Online (Sandbox Code Playgroud)

在这种情况下效果很好.它明确地在@ RichardScriven的回答中做了幕后发生的事情 - 看那里的评论进行更长时间的讨论.


小智 6

这个问题现在有了一个非常简单的答案!

lubridate允许你简单地写,例如,empty_df <- tibble(date = POSIXct())