2012-04-19 7 views
0

私は3次元配列にxtableを使用しようとしています。あなたはこの問題を解決するために私にいくつかのポインタを与える場合、私は感謝しアレイのxtable

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

:私の最小限の例では、これは、次のエラーが生成さ

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]) 
     } 
) 

です。前もって感謝します。

+0

何をしようとしていますか?期待される結果は何ですか? – Andrie

+0

この単純なケースで 'Test [、、1]'と 'Test [、、2]'を 'a_ply'を通して出力したいと思います。 – MYaseen208

答えて

4

a_plyあなたの関数がこれらの行に沿って何かを保存することを期待しています。あなたが関数に渡しているのは、あなたが提供するマージンに基づいて配列のサブセットです。あなたはそれに2×2の配列C2を2x2の配列C1を送っている:

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

ので意味がありませんiであなたのTest配列にインデックスを付けます。

理由だけではない:

apply(Test, 3, xtable) 

または使用plyr:knitrについては

alply(Test, 3, xtable) 

a_ply(Test, 3, function(i) print(xtable(i))) 
+1

ほぼ。彼らはおそらく 'function(x){print(xtable(x))}'になり、 'a_ply'を使って他のすべての出力を抑止したいと考えているので、** knitr **を使って出力を入れたいと思っています。 – joran

+0

あなたは@ジョランです。私は 'knitr'で出力を使いたいです。 – MYaseen208

+0

に応じて編集しました – Justin

1

これは古いスレッドですが、私は上で同様の問題がありました現行の企画。私は、私の配列の3番目のdimの名前を使用してラベルを付けると、HTMLテーブルの出力が必要でした。

問題は、配列を別の方法で使用することによって解決されました。これはanswer私の解決に私を導いた。

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))