【发布时间】:2011-08-04 22:56:03
【问题描述】:
我正在尝试编写一个行为如下的函数,但事实证明这非常困难:
DF <- data.frame(x = seq(1,10), y = rep(c('a','b','c','d','e'),2))
> DF
x y
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e
6 6 a
7 7 b
8 8 c
9 9 d
10 10 e
>OverLapSplit(DF,nsplits=2,overlap=2)
[[1]]
x y
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e
6 6 a
[[2]]
x y
1 5 a
2 6 b
3 7 c
4 8 d
5 9 e
6 10 a
>OverLapSplit(DF,nsplits=1)
[[1]]
x y
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e
6 6 a
7 7 b
8 8 c
9 9 d
10 10 e
>OverLapSplit(DF,nsplits=2,overlap=4)
[[1]]
x y
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e
6 6 a
7 7 b
[[2]]
x y
1 4 e
2 5 a
3 6 b
4 7 c
5 8 d
6 9 e
7 10 a
>OverLapSplit(DF,nsplits=5,overlap=1)
[[1]]
x y
1 1 a
2 2 b
3 3 c
[[2]]
x y
1 3 c
2 4 d
3 5 e
[[3]]
x y
1 5 e
2 6 a
3 7 b
[[4]]
x y
1 7 b
2 8 c
3 9 d
[[5]]
x y
1 8 d
2 9 e
3 10 f
我没有想过如果你尝试类似OverLapSplit(DF,nsplits=2,overlap=1) 会发生什么
可能如下:
[[1]]
x y
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e
[[2]]
x y
1 5 a
2 6 b
3 7 c
4 8 d
5 9 e
6 10 a
谢谢!
【问题讨论】:
-
那么这个函数存在吗,还是你不知道怎么处理边缘情况?
-
@Chase 函数不存在。如果我得到一个可行(但不优雅)的编码版本,我会发布它。
-
@Zach 这个 Q apropos 你之前的 Q 吗? stackoverflow.com/q/5652058/429846
-
@Gavin Simpson:是的,这个问题是基于我之前的问题。基本上,我正在尝试开发一种方法来并行化
rollapply函数。也许我应该直接问这个问题? -
注意 100% 肯定这会有所帮助,您可能希望将数据分解为所需的块大小,
1:31、2:32等并将它们发送到您的节点 - @Joris 和我所做的是将数据拆分为相等的重叠部分,尽管您的rollapply()代码正在做的事情并非如此。
标签: r dataframe data-manipulation data-management