В структуре один из них сгруппирован с атрибутами группы, поэтому если мы ungroup
или преобразуем в data.frame
(as.data.frame
- удаляет атрибуты), cbind
будет работать
library(dplyr)
abc %>%
ungroup %>%
cbind(def)
Может быть воспроизведено с mtcars
cbind(as_tibble(head(mtcars[1:4], 3)) %>%
group_by(cyl),
as_tibble(head(mtcars[5:7], 3)))
# [,1] [,2]
#mpg Numeric,3 Numeric,3
#cyl Numeric,3 Numeric,3
#disp Numeric,3 Numeric,3
#hp Numeric,3 Numeric,3
Без атрибутов группы
cbind(as_tibble(head(mtcars[1:4], 3)), as_tibble(head(mtcars[5:7], 3)))
# mpg cyl disp hp drat wt qsec
#1 21.0 6 160 110 3.90 2.620 16.46
#2 21.0 6 160 110 3.90 2.875 17.02
#3 22.8 4 108 93 3.85 2.320 18.61
Также, проверяя methods
для cbind
methods("cbind")
#[1] cbind.data.frame cbind.grouped_df* cbind.ts*
при наличии grouped_df
он автоматически вызывает cbind.grouped_df
вместо cbind.data.frame
. Если мы явно укажем cbind.data.frame
, он должен работать
cbind.data.frame(as_tibble(head(mtcars[1:4], 3)) %>%
group_by(cyl),
as_tibble(head(mtcars[5:7], 3)))
# mpg cyl disp hp drat wt qsec
#1 21.0 6 160 110 3.90 2.620 16.46
#2 21.0 6 160 110 3.90 2.875 17.02
#3 22.8 4 108 93 3.85 2.320 18.61
ПРИМЕЧАНИЕ. Вопрос ОП касался поведения с cbind
, и это отвечает его причине