创建一个从一组文件中提取用户指定列的函数

时间:2015-03-20 20:38:42

标签: r function csv

我有一组csv文件。它们都具有相同的结构。我想创建一个从所有文件中提取特定列的函数。查找该列中所有值的平均值并将其存储在向量中。列名应由用户传递。

我编写了以下程序。不知怎的,它无法识别污染物"其中包含列名。

   pollutantmean<-function(pollutant)
{
  file_names<-dir("C:/Users/Keval/Desktop/Project R/R_courseera_programming_exercise/specdata",pattern= glob2rx("*.csv"))

  for(file_name in file_names)
  {
    file_reader<-read.csv(file_name)
    pollutant_data<-file_reader$pollutant
  }
  pollutant_data
  pollutant
}`enter code here`

1 个答案:

答案 0 :(得分:1)

使用字符串,例如,使用

调用您的函数
pollutantmean(pollutant = "mercury")

并使用[(接受字符串)代替$,而不是# replace the line pollutant_data <- file_reader$pollutant # with this: pollutant_data <- file_reader[, pollutant]

list.files

这不会出错,但你仍然需要采取一种手段来存储它。我也非常确定你需要dir,而不是pollutantmean<-function(pollutant) { file_names <- list.files("C:/Users/Keval/Desktop/ProjectR/R_courseera_programming_exercise/specdata", pattern= glob2rx("*.csv")) # initialize mean vector at correct length my_means = numeric(length(file_names) # make the loop indexed by number for(i in seq_along(file_names)) { file_reader <- read.csv(file_names[i]) pollutant_data <- file_reader[, pollutant] # using the number index my_means[i] = mean(pollutant_data) } return(my_means) }

{{1}}