R 我可以使用矩阵上的apply函数将数组作为输出吗?

R 我可以使用矩阵上的apply函数将数组作为输出吗?,r,multidimensional-array,apply,sapply,mapply,R,Multidimensional Array,Apply,Sapply,Mapply,我有下面的R函数 testfun<- function(x)if(sum(x)>15){array(1:8,rep(2,3))} else{ array(8:1,rep(2,3))} 我得到的输出是 [,1] [,2] [,3] [1,] 8 8 1 [2,] 7 7 2 [3,] 6 6 3 [4,] 5 5 4 [5,] 4 4 5 [6,] 3 3 6 [7,

我有下面的R函数

testfun<- function(x)if(sum(x)>15){array(1:8,rep(2,3))} else{ array(8:1,rep(2,3))}
我得到的输出是

     [,1] [,2] [,3]
[1,]    8    8    1
[2,]    7    7    2
[3,]    6    6    3
[4,]    5    5    4
[5,]    4    4    5
[6,]    3    3    6
[7,]    2    2    7
[8,]    1    1    8
但我希望输出是一个多维数组。类似于-

, , 1, 1

     [,1] [,2]
[1,]    8    6
[2,]    7    5

, , 2, 1

     [,1] [,2]
[1,]    4    2
[2,]    3    1

, , 1, 2

     [,1] [,2]
[1,]    8    6
[2,]    7    5

, , 2, 2

     [,1] [,2]
[1,]    4    2
[2,]    3    1

, , 1, 3

     [,1] [,2]
[1,]    1    3
[2,]    2    4

, , 2, 3

     [,1] [,2]
[1,]    5    7
[2,]    6    8

我可以在R中这样做,而不必自己定义任何函数吗?

我们可以通过
复制

replicate(3, testfun())

我认为这在
apply
中是不可能的。您可以使用
vapply
获得所需的输出,如下所示:

M <- matrix(1:9, nr=3)
vapply(1:nrow(M), function(i) testfun(M[i,]), FUN.VALUE = array(0,rep(2,3)))

是的。我把问题陈述简单化了。在实际代码中,testfun的输出是对testfun输入的复杂转换,而不是所有输入的常量数组。我将根据需要编辑我的问题
M <- matrix(1:9, nr=3)
vapply(1:nrow(M), function(i) testfun(M[i,]), FUN.VALUE = array(0,rep(2,3)))