数据
v1 <- c("2015-01-05 15:00:00", "2015-01-05 15:45:00", "2015-01-05 15:00:30")
运营
v2 <- strptime(v1, '%Y-%m-%d %H:%M:%S')
str(v2)
POSIXlt[1:3], format: "2015-01-05 15:00:00" "2015-01-05 15:45:00" "2015-01-05 15:00:30"
v3 <- v2[!v2$min] # create v3 from v2 eliminating min != 00
结果(成功的子集)
str(v3)
POSIXlt[1:2], format: "2015-01-05 15:00:00" "2015-01-05 15:00:30"
现在通过将v2强制转换为POSIXct类型来创建v4(成功)
v4 <- as.POSIXct(v2, format = "%y/%m/%d %H:%M")
str(v4)
POSIXct[1:3], format: "2015-01-05 15:00:00" "2015-01-05 15:45:00" "2015-01-05 15:00:30"
问题涉及的操作- 对POSIXct和POSIXlt应用相同的子集操作会导致下面的错误
v5 <- v4[!v4$min] # reassign v2 eliminating min != 00
结果(错误)
Error in v4$min : $ operator is invalid for atomic vectors
问题:
a)为什么会有这种行为差异?
b)与POSIXct一起使用的等效操作是什么?
非常感谢
minute.default <- function(x) as.POSIXlt(x, tz = tz(x))$min
。 - jaimedashas.POSIXlt
来访问(或在 OP 的术语中进行子集操作)POSIXct
对象的部分内容。 - jaimedash