合并两个zoo对象时,为什么会出现“rbind.zoo(…)中的错误:索引重叠”?

合并两个zoo对象时,为什么会出现“rbind.zoo(…)中的错误:索引重叠”?,r,merge,zoo,rbind,R,Merge,Zoo,Rbind,我有两个看似相同的动物园对象,它们是由csv文件中不同时间段的相同命令创建的。我试图将它们组合成一个长动物园,但由于索引重叠错误,我失败了合并“c”或“rbind”都会生成相同错误文本的变体。据我所知,没有重复,时间段也没有重叠。我做错了什么?我在Windows7上使用R版本3.0.1 64位,如果这有区别的话 > colnames(z2) [1] "Amb" "HWS" "Diff" > colnames(t.tmp) [1] "Amb" "HWS" "Diff" >

我有两个看似相同的动物园对象,它们是由csv文件中不同时间段的相同命令创建的。我试图将它们组合成一个长动物园,但由于索引重叠错误,我失败了合并“c”或“rbind”都会生成相同错误文本的变体。据我所知,没有重复,时间段也没有重叠。我做错了什么?我在Windows7上使用R版本3.0.1 64位,如果这有区别的话

> colnames(z2)
[1] "Amb"  "HWS"  "Diff"
> colnames(t.tmp)
[1] "Amb"  "HWS"  "Diff"

> max(index(z2))
[1] "2012-12-06 02:17:45 GMT"
> min(index(t.tmp))
[1] "2012-12-06 03:43:45 GMT"
> anyDuplicated(c(index(z2),index(t.tmp)))
[1] 0


> c(z2,t.tmp)
Error in rbind.zoo(...) : indexes overlap
> 
更新:在尝试创建一个可复制的案例时,我得出结论,这是一个实现错误,因为我正在处理大量的行:如果最终结果超过311434行,那么它将失败

> nrow(c(z2,head(t.tmp,n=101958)))
Error in rbind.zoo(...) : indexes overlap
> nrow(c(z2,head(t.tmp,n=101957)))
[1] 311434
# but row 101958 inserts fine on its own so its not a data problem.
> nrow(c(z2,tail(head(t.tmp,n=101958),n=2)))
[1] 209479
很抱歉,我不具备制作临界长度的zoo的R脚本技能,希望有人能帮助我

更新2-回应Jason的建议..:问题在于匹配,但我的R技能不足以知道如何解释它-这是否意味着匹配在x.t中找到了重复值,而anyDuplicated没有

> x.t <- c(index(z2),index(t.tmp));
> length(x.t)
[1] 520713
> ix <- ORDER (x.t)
> length(ix)
[1] 520713
> x.t <- x.t[ix]
> length(ix)
[1] 520713
> length(x.t)
[1] 520713
> tx <- table(MATCH(x.t,x.t))
> max(tx)
[1] 2
> tx[which(tx==2)]
 311371 311373 311378 311383 311384 311386 311389 311392 311400 311401 
      2      2      2      2      2      2      2      2      2      2 
 > anyDuplicated(x.t)
 [1] 0

在所有的测试和挠头之后,我遇到的问题似乎与时区有关。将环境设置为与原始数据相同的时区可以使其正常工作

Sys.setenv(TZ="GMT")
> z3<-rbind(z2,t.tmp)
> nrow(z3)
[1] 520713

感谢您的灵感,让我朝这个方向看。

请参阅:如果最终结果是200万行,那么对我来说效果很好。s生成该错误的代码是:x