Ответ 1
Лучше всего использовать файлы rda. Вы можете использовать команды save()
и load()
для записи и чтения:
set.seed(101)
a = data.frame(x1=runif(10), x2=runif(10), x3=runif(10))
save(a, file="test.rda")
load("test.rda")
Изменить: Для полноты просто для того, чтобы понять, как может выглядеть предложение Харлана (т.е. обертывание команды load для возврата кадра данных):
loadx <- function(x, file) {
load(file)
return(x)
}
loadx(a, "test.rda")
В качестве альтернативы рассмотрите пакеты hdf5, RNetCDF и ncdf. В прошлом я экспериментировал с hdf5 пакетом; это использует библиотеку NCSA HDF5. Это очень просто:
hdf5save(fileout, ...)
hdf5load(file, load = TRUE, verbosity = 0, tidy = FALSE)
Последняя опция заключается в использовании двоичных подключений файлов, но это не будет работать в вашем случае, потому что readBin и writeBin поддерживают только векторы:
Вот тривиальный пример. Сначала напишите некоторые данные с помощью "w" и добавьте "b" к соединению:
zz <- file("testbin", "wb")
writeBin(1:10, zz)
close(zz)
Затем прочитайте данные с помощью "r" и добавьте "b" к соединению:
zz <- file("testbin", "rb")
readBin(zz, integer(), 4)
close(zz)