0

3次元配列にxtableを使用しようとしています。私の最小限の例は

Test <- 
structure(1:8, .Dim = c(2L, 2L, 2L), .Dimnames = list(c("A1", 
"A2"), c("B1", "B2"), c("C1", "C2")))

library(plyr)
library(xtable)

a_ply(.data=Test, .margins=3, function(i) {
  xtable(x = Test[, , i])
      }
)

これにより、次のエラーが発生します。

  Error in xtable(x = Test[, , i]) : subscript out of bounds

この問題を解決するためのヒントを教えていただければ幸いです。前もって感謝します。

4

2 に答える 2

4

a_ply何も返さないので、関数がこれらまたはそれらの行に沿って何かを保存することを願っています。関数に渡す i は、指定したマージンに基づく配列のサブセットです。したがって、2x2 配列 C1 を送信してから、2x2 配列 C2 を送信します。

a_ply(Test, 3, function(i) {print(i); print('-----')})

Testしたがって、配列へのインデックス付けiは意味がありません。

なぜだけではないのですか:

apply(Test, 3, xtable)

またはプライヤーを使用して:

alply(Test, 3, xtable)

ニットの場合:

a_ply(Test, 3, function(i) print(xtable(i)))
于 2012-04-19T16:37:53.027 に答える
1

これは古いスレッドですが、現在のプロジェクトで同様の問題がありました。配列の 3 番目の次元の名前を使用してラベル付けされたキャプションを持つ HTML テーブル出力が必要でした。

この問題は、配列を別の方法で使用することで解決されました。この答え は私の解決策に私を導きました。

x <- 1:dim(Test)[3]
l_ply(x, 
      function(i) cat(print(
                           xtable(Test[,,i],
                                  caption = paste("Heading ",
                                          dimnames(Test)[[3]][i],
                                          sep = "")),
                           type = "html", caption.placement = "top"), 
                         file = "Test.html",
                         append = TRUE))
于 2016-05-27T18:57:25.497 に答える