我在 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]}
我知道它不优雅或高效或任何东西,即使它有效,我仍然希望有一个更好的方法来做到这一点。有什么想法吗?
答案 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]