我有一个奇怪的问题..
基本上,我有一个函数,它采用维度为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*
})
}
谢谢,
詹姆斯