1
我有代码看起来像这样:基于另一个变量类型的R中的类型转换?
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对象的作品,将是这个特殊的代码足够好!)
iee我所寻找的是像一些神奇的命令:
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
我怀疑这是鱼的不同水壶,也“强硬”;只是觉得我会提到它的情况下,R确实有一些不可思议的方式来做到这一点。 (我必须使用明确的format
用于POSIXct,因为隐式转换将采用“2012-06-21 00:00:00”并将其写为“2012-06-21”而不是“2012-06-21 00:00 :00" )
感谢 - 这正是功能我希望我会找到的类型。但看起来'as(x,'Date')'不会做'as.Date('x')',而是用_no方法或强制“字符”为“日期”的默认方式_ 其他人发现相同问题在这里,但没有给出解决方案: https://stat.ethz.ch/pipermail/r-help/2010-February/229371.html 我想这可能是不可能的? –
P.S. as(x,'Date',strict = F)'也失败。 –
对,所以可以使用命令'showMethods(coerce)'或者特别是'canCoerce(x,cl)'来检查一些内建胁迫方法。在你的情况下,你想要的强制不是内置的,所以你需要制作一个自定义的日期类,它继承自当前的日期类,并且还提供了自定义强制方法。 'as'函数只是调用类中定义的任何强制方法 – qwwqwwq