2015-10-06 29 views
0

我正在使用下面的函数,但我得到错误和相同的答案,当我打电话做功能。你能帮忙吗?我做错了什么?简单的R函数与数据导入和结构

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),我得到了同样的答案

+1

在SO中搜索'pollutantmean',Coursera在这里提问并回答了很多次。 –

回答

1

有几件事情,我发现是错误的与您的程序。

  1. 无论您为目录提供什么参数,您的目录将始终保持不变。
  2. seq_along在第一个for循环中不是必需的,因为它已经是从1开始的序列!
  3. 而最重要的是,for循环会影响轮询,但不会影响平均函数调用。这意味着,poll始终设置为1,然后设置为2,for循环结束。你的平均呼叫将始终呼叫轮询设置为2.这就是为什么你无论如何得到相同的答案。
  4. 这是一个附注,但您的参数实际上并没有对您的程序做任何事情,因为我会进一步研究您的代码。您可以将值设置为函数内部的变量。