Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
变维R-数组_R_Multidimensional Array - Fatal编程技术网

变维R-数组

变维R-数组,r,multidimensional-array,R,Multidimensional Array,我有个奇怪的问题 本质上,我有一个函数,它接受一个维度为Nx(2k)的数据帧,并将其转换为一个维度为Nx2xk的数组。然后,我在函数中的不同位置进一步使用该数组 我的问题是,当k==2时,我只剩下一个Nx2阶的矩阵,更糟糕的是,如果N=1,我只剩下一个1x2阶的矩阵 我想写myArray[thisRow,,]来选择数组的那一部分,但是对于N=1,k=2的情况,这是不够的。我尝试了myArray[thisRow,,,drop=FALSE],但出现了“维数不正确”的错误。同样的问题也出现在Nx2案例

我有个奇怪的问题

本质上,我有一个函数,它接受一个维度为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*
           })
}
this函数1)
{
afMyArray=abind(lappy(1:n组,函数(g){myDF[,2*(g-1)+1:2]}),
沿=3)
}
sapply(1:NROW(myDF),
功能(r)
{
thislice=afMyArray[r,,]
*在这个切片上进行一些操作*
})
}
谢谢


James

你能把你的函数代码贴出来吗?如果我们能看到它是什么样子的话,它将帮助我们回答你的问题。另外,我建议使用*来表示乘法,而不是“x”,因为它可能会与变量混淆。我不确定您在做什么,但
xc您能控制输入吗?使用
[…,drop=FALSE]
可以防止1x2矩阵简化为向量。@WillBeason,*不是表示乘法,而是定义矩阵的维数。另外,提供的示例代码我已经解决了这个问题。谢谢你的提示