R - 具有可变维度的数组

时间:2014-08-17 00:24:50

标签: r multidimensional-array

我有一个奇怪的问题..

基本上,我有一个函数,它采用维度为Nx(2k)的数据框并将其转换为维度为Nx2xk的数组。然后我进一步在函数的不同位置使用该数组。

我的问题是这个,当k == 2时,我留下了一个度数为Nx2的矩阵,更糟糕的是,如果N = 1,我就会遇到1x2度矩阵。

我想写myArray[thisRow,,]来选择数组的那个切片,但这对于N = 1,k = 2的情况来说是不合适的。我尝试了myArray[thisRow,,,drop = FALSE],但是提供了“错误的维数”错误。同样的问题引起了Nx2案件的争议。

是否有解决此问题的方法,或者我是否需要将代码分解为案例?

示例代码如下所示:

thisFunction <- function(myDF)
{
    nGroups = NCOL(myDF)/2
    afMyArray = myDF        

    if(nGroups > 1)
    {
        afMyArray = abind(lapply(1:nGroups, function(g){myDF[,2*(g-1) + 1:2]}),
                          along = 3)
    }

    sapply(1:NROW(myDF), 
           function(r)
           {
               thisSlice = afMyArray[r,,]
               *some operation on thisSlice*
           })
}

谢谢,

詹姆斯

0 个答案:

没有答案