1

我正在尝试将stata数据(data.dta)保存为R数据,然后使用该函数加载数据,然后使用和函数paste分配名称。getpaste

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不是。所以,z <- get( paste0( "income" , year , "x.rda" ) )没用。任何的想法?

4

2 回答 2

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

于 2013-01-10T23:57:56.660 回答
1

当你这样做时:

load( paste0( "income" , year , "x.rda" ) )

....您得到(在“获取”或“访问”或“恢复”的通俗意义上)一个对象(或多个对象)命名为它(它们)被保存时所具有的任何名称。在这种情况下,您将有一个名为“income2010x.dta”的对象,但没有名为“income2010x.rda”的对象,所以这个“get”在 R 函数的受限含义中:

z <- get( paste0( "income" , year , "x.rda" ) ) 

....正如您所观察到的......“不起作用”。

于 2013-01-11T00:26:50.137 回答