2015-11-16 3 views
1

Вопрос немного объяснительный, но я должен добавить, что я не хочу загружать файл. Я ищу что-то вроде append = TRUE для сохранения файла .RData. Я хочу сделать что-то вроде этого:Как добавить вектор в виде строки в сохраненном файле .RData с R

save(df, file="mtcars.Rda",append = TRUE)

Вот воспроизводимый пример:

# load data 
    data("mtcars") 
    head(mtcars) 

# save original DF 
    save(mtcars, file="mtcars.Rdata") 

# create another DF 
    df <- mtcars 

# append DF to a saved Rdata file 
    save(df, file="mtcars.Rdata",append = TRUE) 

Ошибка сохранения (Д.Ф., файл = "mtcars.Rdata", добавьте = TRUE) : объект «TRUE» не найден

+0

Имеет ли функция 'save()' аргумент 'append'? – ekstroem

+0

@ekstroem По-видимому, нет, функция save() имеет примечание о добавлении аргумента. Вот почему я прошу об этом по-другому. Я пытаюсь избежать формата '.csv' ради эффективности кода. –

ответ

1

AFAIK, Вам придется load файл, чтобы внести изменения в сохраненный OBJ ects, а затем снова сохраните эти объекты. Вы даже не можете просматривать имена объектов, хранящихся без загрузки, не говоря уже о модификации содержимого.

Если вы хотите однострочное решение, вы можете написать функцию.

appendToFile <- function(newRow, savedFile){ 
    load(savedFile, new.env()) 
    df = rbind(df, newRow) 
    save(df, file = savedFile) 
} 

df <- data.frame(x = 1:5, y = 6:10) 
save(df, file = "file.RData") 
appendToFile(c(50, 100), "file.RData") 

# Check if changes are saved 
load("file.RData") 
tail(df, 3) 
## x y 
##4 4 9 
##5 5 10 
##6 50 100 
+0

Hi @Narenda, спасибо за ваш ответ, но я ищу решение, которое не загружает файл в память. –

+1

@RafaelPereira С по умолчанию 'save', как вы показываете, файл будет сжат с использованием алгоритма' gzip'. (Подробнее см. '? Save'.) Вы не сможете модифицировать сжатый файл значимым образом, не сокращая его. Даже если 'ascii = T', кадр данных, конечно, не сохраняется в порядке строк (R обычно предпочитает вещи в порядке столбцов), поэтому« добавление строки »является довольно сложным. Я на 99% уверен, что этот ответ - ваш единственный выбор. – Gregor

+0

Если вы хотите легко добавить строки, то CSV или TSV - ваши друзья. Если вы хотите быстро и портативно читать и писать, вы можете проверить [перо] (https://blog.rstudio.org/2016/03/29/feather/). – Gregor

 Смежные вопросы

  • Нет связанных вопросов^_^