【问题标题】:Simple R function with data importing and for structure [duplicate]具有数据导入和结构的简单 R 函数 [重复]
【发布时间】:2016-01-03 15:31:27
【问题描述】:

我正在使用下面的函数,但我错了,当我调用 do 函数时得到了相同的答案。你能帮忙吗?我做错了什么?

pollutantmean <- function(directory, pollutant, id){
    directory<- list.files("specdata", full.names = TRUE)
    id <- 1:332
    getmean <- data.frame(check.rows = TRUE)
    for(i in seq_along(id)) {
    getmean<- rbind(getmean,read.csv(directory[i], blank.lines.skip = TRUE))}
    pollutant <- c("sulfate", "nitrate")
    for (i in seq_along(pollutant)) { poll <- i}
    mean(getmean[ , poll], na.rm = TRUE)
    }

然后我打电话

pollutantmean("specdata", "nitrate", 23)

我明白了

# [1] 3.189369

当我拨打pollutantmean("specdata", "sulfate", 23)时,我得到了相同的答案

【问题讨论】:

  • 在 SO 中搜索 pollutantmean,Coursera 的问题在此被多次询问和回答。

标签: r


【解决方案1】:

我注意到您的程序有几处有问题。

  1. 无论您为目录提供什么参数,您的目录都将始终相同。
  2. 第一个 for 循环中不需要 seq_along,因为它已经是从 1 开始的序列!
  3. 最重要的是,您的 for 循环会影响 poll,但不会影响 mean 函数调用。这意味着,poll 总是设置为 1,然后设置为 2,for 循环结束。您的平均通话将始终在民意调查设置为 2 的情况下通话。这就是为什么无论如何您都会得到相同的答案。
  4. 这是一个旁注,但当我进一步研究您的代码时,您的论点实际上对您的程序没有任何作用。您将值设置为函数内部的变量。

【讨论】:

    猜你喜欢
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多