ここにいくつかのコードがあります.rowSumsが壊れたときに壊れる理由と、test3のクラスを変更すると修正される理由がわかりません。これは奇妙に思えます。バグですか?そうでない場合、何が欠けていますか?
library(reshape)
test <- data.frame(x=1:5)
rowSums(test) # Works
class(test) # "data.frame"
## Trying to break rowSums; see below
class(test) <- c("data.frame", "cast_df")
rowSums(test) # Works, but see below
vars <- c("x", "y", "z")
test2 <- data.frame(label=rep(c("A", "B"), c(3, 3)),
variable=rep(vars, 2),
value=1:6)
test2.cast <- cast(test2, label ~ variable, value="value")
rowSums(test2.cast[, vars]) # Works
rowSums(test2.cast[, "y"]) # Breaks because of drop=TRUE
test3 <- test2.cast[, "y", drop=FALSE]
rowSums(test3) # Why does this break?
class(test3) # c("cast_df", "data.frame")
class(test3) <- "data.frame"
rowSums(test3) # Works! Why?
コンテキスト: キャストによって生成された大きなデータ フレームがあります。次に、そのデータ フレームの列のいくつかの異なるサブセットに対してプログラムで rowSums を呼び出します。サブセットに列が 1 つしかないときにこの動作に気付きました。これは再現可能な小さな例です。