В вашем коде вы имеете дело не с матрицами (в смысле R), а с фреймами данных, так как read.table
возвращает фрейм данных.
В любом случае вы можете добавить один кадр / матрицу данных в другой (при условии совпадения имен столбцов) с помощью команды rbind
Например, если
> a = data.frame(x=c(1,2,3),y=c(4,5,6),z=c(7,8,9))
> b = data.frame(x=c(4,5),y=c(5,6),z=c(6,7))
1010 * тогда *
> rbind(a,b)
x y z
1 1 4 7
2 2 5 8
3 3 6 9
4 4 5 6
5 5 6 7
В коде, который вы предоставляете, есть и другие ошибки. Например
for (i in length(someVector)))
должно быть
for (i in 1:length(someVector)))
R имеет много функций для итерации по data.frames, векторам и т. Д. И может выполнять любые преобразования данных. Большую часть времени не нужно писать цикл for.
Если вы предоставите более подробную информацию о том, что вы пытаетесь сделать, возможно, мы сможем найти более простое решение.
EDIT:
Из вашего пост-обновления видно, что вы пытаетесь выполнить какое-то преобразование между «широким» и «длинным» форматом и отфильтровать некоторые строки, которые не прошли тест. Поправь меня, если я ошибаюсь.
В любом случае, если это так, вам следует проверить команду reshape
. Кроме того, существует пакет reshape
, содержащий чрезвычайно полезные команды melt
и cast
, которые могут выполнять такие преобразования довольно эффективно. Также есть команда merge
для выполнения определенных операций «соединения» для фреймов данных. Я вполне уверен, что ваша проблема может быть решена с помощью комбинации приведенных выше команд, но это зависит от точных деталей.
Для фильтрации строк / столбцов по некоторым критериям проверьте команду subset
.