提问人:Nova 提问时间:10/7/2023 最后编辑:Nova 更新时间:10/7/2023 访问量:42
更改列中类的顺序
Change order of classes in column
问:
我有一个日期时间对象,如下所示:
one <- structure(1678982734, class = c("POSIXt", "POSIXct"), tzone = "UTC")
,
但是当我尝试将其与另一个类切换的数据帧连接时,例如,
连接失败。如何告诉 R 切换定义列类型的类向量的顺序?two <- structure(1678982734, class = c("POSIXct", "POSIXt"), tzone = "UTC")
对于遇到相同问题的任何人,我正在粘贴来自重叠连接的实际错误消息:dplyr
Error in `full_join()`:
! Can't join `x$timestamp` with `y$deploy_on_date` due to incompatible types.
ℹ `x$timestamp` is a <datetime<UTC>>.
ℹ `y$deploy_on_date` is a <POSIXt>.
Run `rlang::last_trace()` to see where the error occurred.
答:
1赞
Joshua Ulrich
10/7/2023
#1
这是一个错误,无论使用什么创建对象。正如@MrFlick所评论的那样,“类”向量应该按继承顺序排列。“POSIXct”继承自“POSIXt”,而不是相反。class = c("POSIXt", "POSIXct")
此外,“POSIXt”是一个“虚拟”类,这意味着你不能创建一个只是 .它存在的唯一原因是“POSIXct”和“POSIXlt”对象可以一起操作(例如,从“POSIXlt”对象中减去“POSIXct”对象)。class = "POSIXt"
同样正如 MrFlick 所说,如果类向量格式不正确,您可以反转它。
check_posix_class <- function(x) {
if (identical(class(x), c("POSIXt", "POSIXct"))) {
class(x) <- rev(class(x))
}
return(x)
}
评论
1赞
Nova
10/7/2023
我提交了错误 github.com/R-ArcGIS/r-bridge/issues/86
2赞
Joshua Ulrich
10/7/2023
@Nova太棒了!感谢您成为出色的社区成员。
评论
class = c("POSIXt", "POSIXct")
class(one) <- rev(class(one))