R 阵列的可扩展性

R 阵列的可扩展性,r,plyr,sweave,xtable,knitr,R,Plyr,Sweave,Xtable,Knitr,我正在尝试将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]) }

我正在尝试将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])
      }
)

如果你能给我一些解决这个问题的建议,我将不胜感激。提前感谢。

a\u ply
不会返回任何内容,因此希望您的函数能够保存这些内容或沿这些行保存一些内容。传递给函数的i是基于您提供的边距的数组子集。因此,您将发送2x2阵列C1,然后发送2x2阵列C2:

a_ply(Test, 3, function(i) {print(i); print('-----')})
因此,用
i
索引到
Test
数组是没有意义的

为什么不只是:

apply(Test, 3, xtable)
或使用plyr:

alply(Test, 3, xtable)
对于knitr:

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

a\u ply
不会返回任何内容,因此希望您的函数能够保存这些内容或沿这些行保存一些内容。传递给函数的i是基于您提供的边距的数组子集。因此,您将发送2x2阵列C1,然后发送2x2阵列C2:

a_ply(Test, 3, function(i) {print(i); print('-----')})
因此,用
i
索引到
Test
数组是没有意义的

为什么不只是:

apply(Test, 3, xtable)
或使用plyr:

alply(Test, 3, xtable)
对于knitr:

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

这是一个旧的线程,但我在当前项目中遇到了类似的问题。我想要一个HTML表格输出,标题使用数组第三个dim的名称进行标记

通过以不同的方式使用我的阵列,问题得以解决。这让我找到了解决办法

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

x这是一个旧线程,但我在当前项目中遇到了类似的问题。我想要一个HTML表格输出,标题使用数组第三个dim的名称进行标记

通过以不同的方式使用我的阵列,问题得以解决。这让我找到了解决办法

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

x你想做什么?预期的结果是什么?在这个简单的例子中,我想通过
a\u层
打印
Test[,1]
Test[,2]
。你想做什么?预期的结果是什么?在这个简单的例子中,我想通过
a层
打印
Test[,1]
Test[,2]
。他们希望使用knitr包含输出,因此他们可能希望自己的函数是
function(x){print(xtable(x))}
,然后使用
a_ply
来抑制所有其他输出。@Justin:如果您能告诉我如何在这些表的标题中包含第三维的名称,我将不胜感激。类似于第一个表标题中的
C1
,以及第二个表标题中的
C2
。谢谢
sapply(dimnames(Test)[[3]],function(i){print(xtable(Test[,i],caption=i));return(NULL)})
我不知道
knitr
好,但这使乳胶很好地发挥作用。@Justin:再次感谢你的帮助。您给定的代码运行良好,除了提供像这样的额外内容
$c1null
。我想知道如何摆脱这个。非常感谢。他们希望使用knitr包含输出,因此他们可能希望自己的函数是
function(x){print(xtable(x))}
,然后使用
a_ply
来抑制所有其他输出。@Justin:如果您能告诉我如何在这些表的标题中包含第三维的名称,我将不胜感激。类似于第一个表标题中的
C1
,以及第二个表标题中的
C2
。谢谢
sapply(dimnames(Test)[[3]],function(i){print(xtable(Test[,i],caption=i));return(NULL)})
我不知道
knitr
好,但这使乳胶很好地发挥作用。@Justin:再次感谢你的帮助。您给定的代码运行良好,除了提供像这样的额外内容
$c1null
。我想知道如何摆脱这个。谢谢