2015-12-17 2 views
-1

У меня есть data.frame в следующем каталоге "/..../1_5_setpoint.Rdata".Как назначить фрейм данных из файла Rdata

Имя фрейма данных «заданное значение», а имя файла «1_5_setpoint». Я хочу создать data.frame с именем «1_5_setpoint». Это мой код:

assign("1_5_setpoint", get(load("/..../1_5_setpoint.Rdata"))) 

Проблема заключается в том, что я в конечном итоге, кадров данных в памяти: одна называется «заданной температуры» (я не хочу этого один) и один под названием «1_5_setpoint» (я хочу это один).

Это может вызвать проблемы, если данные очень большие.

Любые предложения?

ответ

1

Было бы проще, если бы сохранить ваши данные в RDS не Rdata, вы могли бы просто загрузить его в объект с требуемым именем:

saveRDS(mtcars, "mtcars.rds") 
cars <- readRDS("mtcars.rds") 

Rdata файлы используются для хранения всех объектов, которые вы создали , посмотрите на this explanation. Как обсуждалось, hereRDS является решением для хранения отдельных объектов.

1

@ Konrad правильно относится к RDS, являющемуся правильным решением. Иногда у вас нет возможности получить RDS-файл, и вы получаете только файл .RData. В этом случае самый простой метод, который я знаю, - загрузить данные с помощью функции и либо вернуть единственную переменную внутри, либо разрешить выбор переменной для возврата.

Примером здесь может быть:

myLoad <- function(filename, variable) { 
    tmp.env <- new.env() 
    varnames <- load(filename, envir=tmp.env) 
    if (missing(variable)) { 
    ## Choose the variable name as the only variable in the file or 
    ## give an error. 
    if (length(varnames) == 1) { 
     return(get(varnames, envir=tmp.env)) 
    } else { 
     stop("More than one variable present in the file, please specify which variable to extract. Choices are: ", 
      paste(varnames, sep=", ")) 
    } 
    } else { 
    return(get(variable, envir=tmp.env)) 
    } 
} 

ls() 
save(mtcars, file="mtcars.RData") 
mtcars_1_5 <- myLoad("mtcars.RData") 
identical(mtcars, mtcars_1_5) 
ls()