1

次のようなコードがあります。

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

これは別の魚のやかんであり、「タフ」でもあると思います。Rにこれを行うための魔法の方法がある場合に備えて、それについて言及したいと思いました。(format暗黙的な変換は "2012-06-21 00:00:00" を取り、"2012-06-21 00:00: 00")

4

1 に答える 1

2

組み込み関数を使用して、あなたが話していることを達成できると思いますas():

as.same.type.as <- function(instance_of_target_class, object_to_convert) {
    return(as(object_to_convert, 
    class(instance_of_target_class)))
    }
于 2013-07-01T07:37:39.453 に答える