У меня есть основной вопрос о функции слияния.R: Слияние матриц по именам столбцов
С моей точки зрения, слияние (mat1, mat2) должно объединять матрицы по именам столбцов, сохраняя присутствующие в обеих матрицах.
У меня есть две таблицы (примеры ниже). Имена строк различаются, но некоторые имена столбцов являются общими. Я хочу, чтобы столбцы, которые находятся в общем:
MAT1:
B C D E
a x x x x
b x x x x
c x x x x
d x x x x
e x x x x
и MAT2:
B E F G
f y y y y
g y y y y
h y y y y
i y y y y
j y y y y
поэтому выход должен быть что-то вроде:
B E
a x x
b x x
c x x
d x x
e x x
f y y
g y y
h y y
i y y
j y y
Однако слияние (mat1, mat2) возвращается:
> merge(test, testt)
[1] B E C D F G
<0 rows> (or 0-length row.names)
Должно быть, я делаю что-то неправильно. Любой совет? Спасибо!
Я думаю, вы хотите 'rbind (mat1 [, c (1,4)], mat2 [, c (1,2)]) вместо этого? – aichao
'merge' не делает то, что вы думаете. Он выполняет соединение между таблицами (и часто используется с 'data.frame', а не с матрицами). Ваша цель, возможно, достигается с помощью 'commoncols <-intersect (colnames (mat1), colnames (mat2)); rbind (mat1 [, commoncols], mat2 [, commoncols]) ' – nicola
@aichao no, так как я не хочу указывать, какие столбцы являются общими. Я буду применять это для очень больших таблиц – arielle