我的代码看起来像这样:
if(inherits(index(x),"POSIXct"))index_d=as.POSIXct(rownames(d))
else if(inherits(index(x),"Date"))index_d=as.Date(rownames(d))
else stop(paste0("x uses a date index (",attr(x,".indexCLASS"),") we are not expecting..."))
(x
是一个XTS对象,但我希望有一个通用的解决方案。但是对于这个特定的代码来说,适用于XTS对象的东西就足够了!)
即。我正在寻找的是一些神奇的命令,如:
index_d = as.same.type.as(index(x),rownames(d))
if(inherits(index(x),"POSIXct"))rownames(d)=as.character(dates,format="%Y-%m-%d %H:%M:%S")
else rownames(d)=dates #Rely on implicit conversion from Date to character
我怀疑这是一种不同的鱼,也是'#34; hard&#34 ;;只是想到我提到它以防R确实有一些神奇的方法来做到这一点。 (我必须使用显式format
作为POSIXct,因为隐式转换将采用" 2012-06-21 00:00:00"并将其写为" 2012-06- 21" not" 2012-06-21 00:00:00")
答案 0 :(得分:2)
我认为你可以使用内置as()
函数来完成你所说的内容:
as.same.type.as <- function(instance_of_target_class, object_to_convert) {
return(as(object_to_convert,
class(instance_of_target_class)))
}