【问题标题】:Having R read in the .rda file that is entered by the user让 R 读取用户输入的 .rda 文件
【发布时间】:2014-07-11 21:02:09
【问题描述】:

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

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

【问题讨论】:

  • 由于您不是在问一个非常具体的问题,您可以从搜索诸如 r read file folder 之类的东西开始。已经有很多关于如何将文件读入 R 的问题和答案。

标签: r function rda


【解决方案1】:

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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 2022-10-21
    • 2021-10-29
    • 2021-03-23
    相关资源
    最近更新 更多