这需要一些“棘手的R”,但这一次超出了我的幻想:-)我需要save()
一个名称在变量var
中的对象。我尝试过:
save(get(var), file = ofn)
# Error in save(get(var), file = ofn) : object ‘get(var)’ not found
save(eval(parse(text = var)), file = ofn)
# Error in save(eval(parse(text = var)), file = ofn) :
# object ‘eval(parse(text = var))’ not found
不幸的是,两者都失败了。您将如何解决这个问题?
答案 0 :(得分:8)
使用list
参数。这样会将x
保存在文件x.RData中。 (list
参数可以指定名称的向量,如果您一次需要保存多个)。
x <- 3
name.of.x <- "x"
save(list = name.of.x, file = "x.RData")
# loading x.RData to check that it worked
rm(x)
load("x.RData")
x
## [1] 3
对于问题中的第一次尝试使用get
,我们需要指定名称而不是其值,以便尝试使用do.call
将字符名称转换为name
类对象。
do.call("save", list(as.name(name.of.x), file = "x.RData"))
关于使用eval
的问题的第二次尝试,写出save
,将其名称替换为name
类对象,然后对其求值。
eval(substitute(save(Name, file = "x.RData"), list(Name = as.name(name.of.x))))
答案 1 :(得分:0)
如果只是一个对象,则可以使用saveRDS
:
a<-1:4
var<-"a"
saveRDS(get(var),file="test.R")
readRDS(file="test.R")
[1] 1 2 3 4