【问题标题】:Load() function in R with an inputR中带有输入的Load()函数
【发布时间】:2021-04-26 04:43:18
【问题描述】:

我正在使用 R 创建一个允许我加载特定 Rdata 的函数。 所以我有几个不同的文件,每个文件都包含一个特定的 Rdata 集。例如,如果我想加载有关北线的信息,我会写 load(“TfL/Line/northern/Arrivals.Rdata")

如果我想要圆线,我会写 load(“TfL/Line/circle/Arrivals.Rdata")

问题是,我是否可以使用 load 函数编写一个以管道名称(例如LineName)作为输入的函数?我试过了

Get_information<- function(LineName==NULL){
load(“TfL/Line/LineName/Arrivals.Rdata")}

这不起作用。有人可以帮我处理这个吗?谢谢!

【问题讨论】:

  • Get_information &lt;- function(LineName){ path &lt;- paste0("./TfL/Line/", LineName,"Arrivals",".Rdata) load(path) } paste0 可能是您正在寻找的。这假设您的工作目录 getwd() 是 TfL 之前的一个文件夹
  • 嗨,hannie,欢迎来到 Stack Overflow,恭喜您提出第一个问题!我已经编辑了您的问题以包含代码块。我使用反引号 (`) 执行此操作,但有几种不同的方法,您可以在此处阅读:stackoverflow.com/editing-help#code 另一个非常有用的指南是“如何制作一个最小的、可重现的示例”:stackoverflow.com/help/minimal-reproducible-example 这个问题没有没有一个可重复的例子,但它很简单,所以我认为它不需要一个。

标签: r character load


【解决方案1】:

您需要将“LineName”作为变量传递。目前,您只是将“LineName”写为字符串文字。

有几个函数可以做到这一点:

粘贴0

Paste0 将字符向量(文字或对象)组合成一个字符串:

load(paste0(“TfL/Line/", LineName, "/Arrivals.Rdata"))

胶水

Glue 是一个 CRAN 包,其功能与 paste0 类似,但更易于编写和阅读:

#install.packages("glue") #<- run if you don't have glue installed
require("glue") # attach the package so that we can use 'glue'
load(glue("TfL/Line/{LineName}/Arrivals.Rdata"))

如果在您的函数中运行其中任何一个,它将按预期工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-29
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2019-10-29
    • 1970-01-01
    相关资源
    最近更新 更多