4

mapply を使用して、データフレームの列 a と b の現在の日付に月を追加しようとしています。サンプル データ フレームを作成するコードは次のとおりです。

library(lubridate)
a <- as.Date(c("2012-01-11","2012-06-30","2012-04-18"))
b <- as.Date(c("2013-04-21","2012-03-22","2012-05-01"))
df <- data.frame(a,b)

mapply("+",df, c(30,30))日付の両方の列に 30 日を追加するために使用できます。ただし、コマンドmapply("%m+%",df, months(1:2))を使用しようとすると、次のエラー メッセージが表示されます。

.setupMethodsTables(fdef、initialize = TRUE) のエラー: クラス「builtDefaultMethod」のこのオブジェクトの名前「group」のスロットがありません

%m+% 演算子で mapply を使用することは可能ですか?

4

1 に答える 1

1

私の S4 無知な目には、これは lubridate パッケージと %m+%メソッドの構築方法に問題があるように見えます。

ソースを見ると、

エクスポートされていない関数.quick_month_addは、あなたが望むことをするようです

 mapply(lubridate:::.quick_month_add,df,months(1:2), SIMPLIFY = FALSE)
$a
[1] "2012-01-11" "2012-06-30" "2012-04-18"

$b
[1] "2013-04-21" "2012-03-22" "2012-05-01"

SIMPLIFYに設定する必要があることに注意してください。FALSEそうしないと、行列に単純化するときに Date クラスが削除されるため、数値行列が得られます。

または、Map(lubridate:::.quick_month_add,df,months(1:2))

于 2013-02-11T22:37:25.530 に答える