【问题标题】:Function that imports data导入数据的功能
【发布时间】:2018-02-13 19:22:59
【问题描述】:

我正在尝试创建一个将我的数据导入 R 的函数。每当我调用此函数时,虽然它会运行但我在任何地方都看不到我的数据集

inputData <- function(){
  teams <- read.csv('C:/Users/BT_1N3_24/Desktop/PremierLeaguePlayers.csv', header = TRUE)
  currentTeam <- read.csv('C:/Users/BT_1N3_24/Desktop/TeamStats.csv', header = TRUE)
}

【问题讨论】:

  • 在 R 中,从广义上讲,函数创建自己的环境,函数内部的变量仅限于该环境。您应该将这些行放在函数之外,以使对象 teamscurrentTeam 出现在全局环境中。
  • 所以我不能通过函数或类似的东西使它们成为全局变量?
  • 您可以使用&lt;&lt;- 而不是&lt;-,但这是非常糟糕的形式并且不像R。如果您返回要加载的 data.frames 列表,会容易得多。
  • 就这个功能而言,你可以做currentTeam &lt;- inputData()并在全局环境中创建一个currentTeam对象。除非另有说明,否则函数默认返回最后一行。如果出于某种原因需要在函数中使用这些行,则可以创建一个包含数据对象的列表并返回该列表。为什么你需要在函数中使用它?
  • 如果您使用运算符&lt;&lt;- 而不是&lt;-,则可以将其设为全局变量。尝试以这种方式分配它teams &lt;&lt;- read.csv(.....)

标签: r


【解决方案1】:

所有函数在 R 中都是局部作用域的。如果你想从环境中传递一些东西,它必须作为一个对象返回。我会这样写你的代码:

inputData <- function(){
  teams <- read.csv('C:/Users/BT_1N3_24/Desktop/PremierLeaguePlayers.csv', header = TRUE)
  currentTeam <- read.csv('C:/Users/BT_1N3_24/Desktop/TeamStats.csv', header = TRUE)
  list(teams, currentTeam)
}

## call the function
data.list <- inputData()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    相关资源
    最近更新 更多