0

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

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

因为我需要读取的池中没有那么多 .rda 文件,所以我想一种方法就是执行 if 语句,如下所示。

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]}

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

4

1 回答 1

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]
于 2014-05-22T20:46:39.977 回答