让R读入用户输入的.rda文件

时间:2014-05-22 17:18:59

标签: r function rda

我在 R 中有一个函数,我需要有条件地加载.rda文件。例如,我希望函数的用户能够指定他们想要加载的文件,然后 R 将加载相应的数据文件。

该函数有两个参数,即状态(即“NY”)和我希望它加载的.rda文件(即“data_0203.rda”。

因为池中没有那么多我需要读取的.rda文件,所以我认为只有一种方法可以用于语句,如下所示。

if(datafile=="data_9091"||datafile=="data_9091.rda")
{load("/Users/blahblahblah/data_9091.rda")
state.in=as.data.frame(data_9091[[which(names(data_9091)==(tolower(state)))]][1])
state.out=as.data.frame(data_9091[[which(names(data_9091)==(tolower(state)))]][2]})

else if(datafile=="data_9192"||datafile=="data_9192.rda")
{load("/Users/blahblahblah/data_9192.rda")
state.in=as.data.frame(data_9192[[which(names(data_9192)==(tolower(state)))]][1]
state.out=as.data.frame(data_9192[[which(names(data_9192)==(tolower(state)))]][2]}

我知道它不优雅或高效或任何东西,即使它有效,我仍然希望有一个更好的方法来做到这一点。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

load()函数返回它从rda文件“膨胀”的对象的名称。所以你可以做类似

的事情
datafile <- gsub("\\.rda$", "", datafile)
dats <- load(paste("/Users/blahblahblah/", datafile, ".rda", sep="")
stopifnot(length(dats)==1)
dd<-get(dats[1])
state.in  <-as.data.frame(dd[[which(names(dd)==(tolower(state)))]][1]
state.out <-as.data.frame(dd[[which(names(dd)==(tolower(state)))]][2]