如何从 Rdata 文件分配数据框
How to assign a data frame from a Rdata file
我在以下目录“/..../1_5_setpoint.Rdata”中有一个 data.frame。
数据框的名称是"setpoint",文件的名称是“1_5_setpoint”。我想创建一个名为“1_5_setpoint”的 data.frame。这是我的代码:
assign("1_5_setpoint", get(load("/..../1_5_setpoint.Rdata")))
问题是我最终不得不在内存中处理数据帧:一个叫 "setpoints"(我不想要这个)和一个叫“1_5_setpoint”(我想要这个) ).
如果数据很大,这可能会导致问题。
有什么建议吗?
如果将数据保存为 RDS
而不是 Rdata
会更容易,然后您可以简单地将其加载到具有所需名称的对象中:
saveRDS(mtcars, "mtcars.rds")
cars <- readRDS("mtcars.rds")
Rdata
文件用于存储您创建的所有对象,请查看this explanation. As discussed here RDS
是用于存储单个对象的更优解决方案。
@Konrad 关于 RDS 是正确解决方案的说法是正确的。有时,您没有获取 RDS 文件的选项,而只能获取 .RData 文件。在那种情况下,我知道的最简单的方法是使用函数加载数据,并且 return 是其中唯一的变量,或者允许选择变量 return.
一个例子可能是:
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()
我在以下目录“/..../1_5_setpoint.Rdata”中有一个 data.frame。
数据框的名称是"setpoint",文件的名称是“1_5_setpoint”。我想创建一个名为“1_5_setpoint”的 data.frame。这是我的代码:
assign("1_5_setpoint", get(load("/..../1_5_setpoint.Rdata")))
问题是我最终不得不在内存中处理数据帧:一个叫 "setpoints"(我不想要这个)和一个叫“1_5_setpoint”(我想要这个) ).
如果数据很大,这可能会导致问题。
有什么建议吗?
如果将数据保存为 RDS
而不是 Rdata
会更容易,然后您可以简单地将其加载到具有所需名称的对象中:
saveRDS(mtcars, "mtcars.rds")
cars <- readRDS("mtcars.rds")
Rdata
文件用于存储您创建的所有对象,请查看this explanation. As discussed here RDS
是用于存储单个对象的更优解决方案。
@Konrad 关于 RDS 是正确解决方案的说法是正确的。有时,您没有获取 RDS 文件的选项,而只能获取 .RData 文件。在那种情况下,我知道的最简单的方法是使用函数加载数据,并且 return 是其中唯一的变量,或者允许选择变量 return.
一个例子可能是:
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()