【发布时间】:2017-10-06 18:26:52
【问题描述】:
我无法理解为什么以下代码的行为方式。基本上,过滤器似乎已应用,但在后续调用中无法正常工作。
> library(dplyr)
> library(lubridate)
>
> md1 <- data.frame(no = 1:4, time = c("12:30:00", "13:30:00", "14:30:00", "15:30:00"))
> md1$time <- hms(md1$time)
> md1
no time
1 1 12H 30M 0S
2 2 13H 30M 0S
3 3 14H 30M 0S
4 4 15H 30M 0S
> md2 <- filter(md1, hour(time)<14)
> md2
no time
1 1 12H 30M 0S
2 2 13H 30M 0S
> hour(md2$time)
[1] 12 13 14 15
虽然我希望/期望收到 [1] 12 13 在最后一次通话中
欢迎提出任何建议。它在 3.3.1 和 3.4.0 版本的 R (Windows 7) 中的行为相同
【问题讨论】:
-
filter存在某种错误;它警告我 data.frame 已损坏。不过,它适用于基本子集:md2 <- md1[hour(md2$time) < 14, ]