2012-04-19 3 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를 2 × 2 배열 C1을 보내는 :

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

그래서 이해가되지 않습니다 iTest 배열에 색인.

왜 그냥 :

apply(Test, 3, xtable) 

또는 사용 plyr : knitr를 들어

alply(Test, 3, xtable) 

:

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

거의. 그들은 아마도 ** function을 (function) (x) {print (xtable (x))}'하고 다른 모든 출력을 억제하기 위해'a_ply'를 사용하기를 원한다면 ** knitr **을 사용하여 출력을 포함하기를 원할 것입니다. – joran

+0

당신이 바로 @ or란. 출력을'knitr'에서 사용하고 싶습니다. – MYaseen208

+0

그에 따라 편집 됨 – Justin

1

이 오래된 스레드,하지만 난에 비슷한 문제가 있었다 현재 프로젝트. 내 배열의 3 번째 희미한 이름을 사용하여 레이블이 붙은 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))