2010-09-15 3 views
3

Я получаю новое сообщение об ошибке, которое я не могу отлаживать. У меня есть два набора данных х, х2:Странная ошибка слияния фреймов данных

 ID returns.x returns.y 
111111118 0.012852 -0.001436 
1145JXAP4 0.000000 0.025316 
114LYTBB1 -0.090909 0.100000 
114R88BT4 0.000000 0.000000 
114Y4KDH0 -0.055344 -0.094950 
1198CUV40 0.016043 0.005263 

и

 ID returns 
111111118 -0.043392 
11D7GQAK9 0.000000 
11JS8VT41 -0.036116 
11NJGF6V7 0.000000 
11NSZA7T1 0.113978 
11STQQNH7 0.000000 

, давая merge(x, x2, by = "ID", all = TRUE) я получаю сообщение

Error in match.names(clabs, names(xi)) : 
    names do not match previous names 

Что виновником?

+0

какая версия R это? Хорошо работает здесь (2.11.1) –

+0

Hah! Хорошая точка, даже не проверила - и dito для 2.11.0 –

+0

Спасибо, у меня была такая же проблема, и из вашего названия я понял, что я также использую data.frames, а не матрицы: первая проблема при работе с R ! –

ответ

3

Я бы поставил его где-то между unlucky и ошибкой. IIRC .x и .y являются добавочным добавлением по умолчанию. Просто использование чего-то другого прекрасно работает. Это должно быть эквивалентно:

> A <- data.frame(ID=1:3, rx=rnorm(3), ry=rnorm(3)) 
> B <- data.frame(ID=c(1,3,5), ret=rnorm(3)) 
> merge(A, B, by="ID", all=TRUE) 
    ID  rx  ry  ret 
1 1 0.45260 -0.21953 -0.56536 
2 2 0.35250 -1.35109  NA 
3 3 -0.56535 1.24298 -0.13605 
4 5  NA  NA 0.42105 
> 
Смежные вопросы