R中工作空间中的对象

时间:2013-01-10 23:40:33

标签: r object stata

我正在尝试将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没有用。有什么想法吗?

2 个答案:

答案 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" ) ) 

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