按行数据索引时出错。表的列包含来自包lubridate的interval对象

按行数据索引时出错。表的列包含来自包lubridate的interval对象,r,indexing,data.table,intervals,lubridate,R,Indexing,Data.table,Intervals,Lubridate,我有这样的数据(更改以保护原始数据): 对于数据表中的列类型: > mapply(class, dose_merged) $SUBJECT_Blinded [1] "numeric" $PACKID [1] "numeric" $SACDPDAT [1] "POSIXct" "POSIXt" $SACRTDAT [1] "POSIXct" "POSIXt" $treatment_interval [1] "Interval" attr(,"package") [1] "lubr

我有这样的数据(更改以保护原始数据):

对于数据表中的列类型:

> mapply(class, dose_merged)
$SUBJECT_Blinded
[1] "numeric"

$PACKID
[1] "numeric"

$SACDPDAT
[1] "POSIXct" "POSIXt" 

$SACRTDAT
[1] "POSIXct" "POSIXt" 

$treatment_interval
[1] "Interval"
attr(,"package")
[1] "lubridate"

$SD_SDAT

[1] "POSIXct" "POSIXt" 

$SD_EDAT
[1] "POSIXct" "POSIXt" 
我正在尝试按行索引,例如:

dose_merged[10:15,]
然后,我得到错误消息:

Error in format(x@start, tz = x@tzone, usetz = TRUE) : 
trying to get slot "start" from an object (class "Interval") that is not an S4 object 
发生了什么事?:)

dput的前4行(剂量合并):

结构(列表(受试者为盲=c(222001、2201001、2201001、,
222022),PACKID=c(10096105951097112592),SACDPDAT=structure(c(1335304800,
132554520013203612001330556400),类别=c(“POSIXct”,“POSIXt”
),tzone=“”),SACRTDAT=结构(c(13403160001327964400,
13255452001335304800),class=c(“POSIXct”,“POSIXt”),tzone=“”),
治疗间隔=结构(c(58,28,60,55),类别=结构(“间隔”,package=“lubridate”),
TS_SDAT=结构(c(NA_real,NA_real,NA_real,NA_real,NA_real_
),class=c(“POSIXct”,“POSIXt”),tzone=“”),TS_EDAT=structure(c(NA_real),
NA_real,NA_real,NA_real),class=c(“POSIXct”,“POSIXt”
),tzone=“”),SD_SDAT=结构(c(1325545200,1325545200,
13255452001325545200),class=c(“POSIXct”,“POSIXt”),tzone=“”),
SD_EDAT=结构(c(1357081200,1357081200,1357081200,
1357081200),class=c(“POSIXct”,“POSIXt”),tzone=“”),.Names=c(“受试者为盲”),
“PACKID”、“SACDPDAT”、“SACTDAT”、“治疗间隔”、“TSU SDAT”,
“TS_-EDAT”、“SD_-SDAT”、“SD_-EDAT”),排序为=“受试者盲法”,类别=c(“数据表”,
“data.frame”),row.names=c(NA,-4L),.internal.selfref=)

您能否提供部分/全部数据,
dput(dose\u merged)
并将其粘贴到问题中。是的,我添加了您询问的数据。我无法重现您的错误,但您只提供了2行数据。您可以生成15行,因为您说这是创建错误的命令。另外,您能在view命令中添加至少15行吗?Hovewer,我还通过编写例如dose_merged[1:2],得到了错误,所以我可能只会再添加两行(我必须修改它们以保护原始数据。)奇怪的是,命令dput(dose_merged[1:15],“dose_merged_copy2”)可以工作!我也有这个问题,还没有找到解决办法。你有没有想过?
Error in format(x@start, tz = x@tzone, usetz = TRUE) : 
trying to get slot "start" from an object (class "Interval") that is not an S4 object 
 structure(list(SUBJECT_Blinded = c(2222001, 2201001, 2201001, 
 2222022), PACKID = c(10096, 10595, 10971, 12592), SACDPDAT = structure(c(1335304800, 
 1325545200, 1320361200, 1330556400), class = c("POSIXct", "POSIXt"
 ), tzone = ""), SACRTDAT = structure(c(1340316000, 1327964400, 
 1325545200, 1335304800), class = c("POSIXct", "POSIXt"), tzone = ""), 
treatment_interval = structure(c(58, 28, 60, 55), class = structure("Interval", package = "lubridate")), 
TS_SDAT = structure(c(NA_real_, NA_real_, NA_real_, NA_real_
), class = c("POSIXct", "POSIXt"), tzone = ""), TS_EDAT = structure(c(NA_real_, 
NA_real_, NA_real_, NA_real_), class = c("POSIXct", "POSIXt"
), tzone = ""), SD_SDAT = structure(c(1325545200, 1325545200, 
1325545200, 1325545200), class = c("POSIXct", "POSIXt"), tzone = ""), 
SD_EDAT = structure(c(1357081200, 1357081200, 1357081200, 
1357081200), class = c("POSIXct", "POSIXt"), tzone = "")), .Names = c("SUBJECT_Blinded", 
"PACKID", "SACDPDAT", "SACRTDAT", "treatment_interval", "TS_SDAT", 
"TS_EDAT", "SD_SDAT", "SD_EDAT"), sorted = "SUBJECT_Blinded", class = c("data.table", 
"data.frame"), row.names = c(NA, -4L), .internal.selfref = <pointer: 0x0000000000300788>)