R 我可以使用矩阵上的apply函数将数组作为输出吗?
我有下面的R函数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,
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)))