Arrays 使用R将数组拆分为更小的数组

Arrays 使用R将数组拆分为更小的数组,arrays,r,split,Arrays,R,Split,我有一个1D数组,奇数行,2435行。我想将阵列拆分为更小的阵列,每次执行一个小测试 首先,我想把大数组分成两个小数组 然后我想把我的数组分成4个小数组,然后分成8个小数组,依此类推 有人能帮忙吗 一个例子如下: A为什么不直接使用split()函数呢?例如(使用奇数长度将返回警告,但这很好): 如果您真的希望拆分为2,然后再拆分为2,则始终可以使用lappy()函数,该函数适用于列表的每个元素: lapply(split(x = 1:11, f = 1:2), split, f = 1:2)

我有一个1D数组,奇数行,2435行。我想将阵列拆分为更小的阵列,每次执行一个小测试

首先,我想把大数组分成两个小数组

然后我想把我的数组分成4个小数组,然后分成8个小数组,依此类推

有人能帮忙吗

一个例子如下:


A为什么不直接使用
split()
函数呢?例如(使用奇数长度将返回警告,但这很好):

如果您真的希望拆分为2,然后再拆分为2,则始终可以使用
lappy()
函数,该函数适用于列表的每个元素:

lapply(split(x = 1:11, f = 1:2), split, f = 1:2)
#$`1`
#$`1`$`1`
#[1] 1 5 9
#
#$`1`$`2`
#[1]  3  7 11
#
#
#$`2`
#$`2`$`1`
#[1]  2  6 10
#
#$`2`$`2`
#[1] 4 8
嵌套结构有点麻烦,但还有其他处理方法,例如:

L <- split(x = 1:11, f = 1:2) # the main (first) split
names(L) <- letters[1:length(L)] # names the main split a and b
LL <- lapply(L, split, f = 1:2) # split the main split
unlist(LL, recursive = F)
#$a.1
#[1] 1 5 9
#
#$a.2
#[1]  3  7 11
#
#$b.1
#[1]  2  6 10
#
#$b.2
#[1] 4 8

L如果要通过数组中间拆分数据,也可以使用拆分功能:

a <- 1:2435

divide <- function(x, n = 2)
{
  i <- ceiling(length(x)/n)
  split(x,x%/%i+1)

}

divide(a)
或者在两种情况下使用

lapply(divide(a,2),function(x) divide(x,2))

如果n值较高,则由于舍入问题,大小将不再相等。这保证了使用嵌套方法。

不太清楚您想要什么。请尝试添加一个。另外,你可以看看这篇文章,我看过那篇文章,但我认为这篇文章只是分割了数据。我可以在拆分后存储它们吗?尝试将它们存储到
列表中
@Gina您可以尝试类似
x的方法谢谢,我确实使用了列表功能来存储它们。我从来没有在R代码,所以所有这些对我来说都是新的。谢谢你的帮助。如果我想检查数组的尺寸。我试过调暗,但结果无效。例如,a
a
是一个向量,没有
dim
属性,因此必须使用
length(a)
divide(a, n = 4)
lapply(divide(a,2),function(x) divide(x,2))