我正在尝试将stata
数据(data.dta
)保存为R
数据,然后使用paste
函数加载数据,然后使用{{ 1}}和get
功能。
paste
我发现在这些步骤之后library(foreign)
getwd()
"C:/Users/Vista/Documents/project"
year<-2010
income2010x.dta<-read.dta("data.dta")
save(income2010x.dta,file="income2010x.rda")
load( paste0( "income" , year , "x.rda" ) )
z <- get( paste0( "income" , year , "x.dta" ) ) # works
z <- get( paste0( "income" , year , "x.rda" ) ) # doesn't work
z
Error in get(income2010x.rda) : object 'income2010x.rda' not found
ls()
income2010x.dta
...
被存储为对象,但income2010x.dta
不是。所以,income2010x.rda
没有用。有什么想法吗?
答案 0 :(得分:1)
income2010x.dta<-read.dta("data.dta")
在工作区内创建一个data.frame调用ed income2010x.dta
。
save
允许您保存许多对象,当您load
时,它们将与您保存时的名称相同。
您可以使用saveRDS
保存单个对象,readRDS
将其读取为其他名称
saveRDS(income2010x.dta,file="income2010x.rda")
income2010x.rda <- readRDS('income2010x.rda')
话虽如此,我不明白为什么你需要两份副本,或者为什么你使用get
来创建与z
相同的对象的第三个副本
答案 1 :(得分:1)
执行此操作时:
load( paste0( "income" , year , "x.rda" ) )
....你得到(在“获取”或“访问”或“恢复”的口语意义上的一个对象(或多个对象),命名为它们(它们)被保存时的命名。在这种情况下,你将有一个名为'income2010x.dta'的对象,但没有名为“income2010x.rda”的对象,所以这个“得到”在R函数的限制含义中:
z <- get( paste0( "income" , year , "x.rda" ) )
....正如你所观察到的......“不起作用”。