Прочитайте файлы, указанные Ричи Коттоном, но убедитесь, что вы добавили соответствующие дополнительные аргументы в вызове apply. Для одного, header=TRUE
, вероятно, следует добавить.
file.names <- c("file X.txt", "file Y.txt", "file Z.txt")
file.list <- lapply(file.names, read.table, header=TRUE)
Тогда вам, вероятно, понадобится merge_recurse
из reshape package
:
require(reshape)
mynewframe <- merge_recurse(file.list,all.x=TRUE,all.y=TRUE,by="ProbeID")
Это будет работать для любого количества данных, если их не миллиард. Для получения дополнительной информации об используемых аргументах см. Страницу справки ?merge
.
ИСПРАВЛЕНИЕ: в merge_recurse вы должны использовать all.x
и all.y
, как показано в приведенном выше исправлении. Вы не можете просто использовать ярлык all
, иначе вы получите ошибки.
Небольшая демонстрация:
X2 <- data.frame(ProbeID=(2:4),Z2=4:6)
X1 <- data.frame(ProbeID=1:3,Z1=1:3)
X3 <- data.frame(ProbeID=1:3,Z3=7:9)
file.list <- list(X1,X2,X3)
mynewframe <- merge_recurse(file.list,all.x=TRUE,all.y=TRUE,by="ProbeID")
> mynewframe
ProbeID Z1 Z2 Z3
1 1 1 NA 7
2 2 2 4 8
3 3 3 5 9
4 4 NA 6 NA