作为大学任务的一部分,我正在尝试制作一个小型的r包,它提供了一些关于GTFS提要的基本统计数据和图形。
我正在使用https://github.com/ondrejivanic/131500/blob/master/gtfs.r中的文件。
我必须创建一些S4类作为赋值的一部分。我为每个GTFS feed文件创建了一个单独的类。我正在尝试制作服务ID列表,以生成给定日期的行程数量的图形。
这里我定义并创建了该类的对象。
# Create the S4 Class for calendar_dates.txt
# calendar_dates.txt - service_id, date, exception_type
setClass("CalendarDates", representation(service_id = "factor", date = "POSIXct", exception_type = "numeric"))
# create new object of SHAPES from files
calendar_dates <- transform(
read.gtfs.file("calendar_dates.txt", "data"),
date = ymd(date)
)
# create S4 object of routes
calendar_datesS4 <- new("CalendarDates", service_id = calendar_dates$service_id, date = calendar_dates$date, exception_type = calendar_dates$exception_type)
我无法理解的部分是如何在S4对象上执行此子集。下面的部分使用数据框对象:
calendar.dates <- calendar_datesS4
calendar.dates[calendar.dates$date == d & calendar.dates$exception_type == 1, c("service_id")]
[1] "daily_1" "daily_2" "daily_3" "daily_4"
执行以下操作会导致错误:
calendar.dates[calendar.dates@date == d & calendar.dates@exception_type == 1, c("service_id")]
Error in calendar.dates[dates == d & exceptions == 2, c("service_id")] :
'S4'类型的对象不是子集
我没有在其他地方发现任何问题,其中必须满足子集的条件。
我真的很感激任何帮助!