写在前面:本人新手,做题时遇到了些疑惑,找过相关书籍和资料,没能解决,所以来论坛问问你们。
问题
构造一个函数 f <- function(directory,pollutant,id),
其中directory是长度为1的字符向量,指明CSV文件的位置
pollutant是长度为1的字符向量,指明CSV文件中数据的名称(pollutant1和pollutant2)
id是正整数向量,指明CSV文件序号
共有CSV文件100个,分别命名为001.csv、002.csv、...、100.csv
每个CSV文件pollutant1和pollutant2下都有很多数据(包含缺失值)
那我该如何构造一个这样的函数计算相应文件中相应pollutan的均值呢?即如何构造“f”从“directory”参数中指定的目录下读取数据,并返回pollutant的平均值,忽略代码为NA的任何缺失值。
我构造的函数:
pollutantmean <- function(directory, pollutant, id = 1:100) {
setwd("C:\\Users\\ruochu\\Desktop\\Coursera\\R Programming") #也不知道能不能在函数中更改工作目录
a <- list.files("specdata") #specdata是存放CSVs文件的文件夹,且里面只有这些文件
dir <- paste("./specdata/",a,sep="")
n <- length(id)
merge.data <- read.csv(file = dir[id[1]], header=T, sep=",")
if (n >= 2) {
for (i in id[2]:id[n]) {
data <- read.csv(file = dir, header=T, sep=",")
merge.data <- rbind(merge.data,data)
}
}
if ("pollutant" == "pollutant1“) {
mean(merge.data[,2],na.rm=TRUE) #CSV文件中第二列即pollutant1
} else {
mean(merge.data[,3],na.rm=TRUE) #CSV文件中第三列即pollutant1
}
}
可是问题在于我并没有用到directory
比如要求specdata中第70、71、72号文件中polltant2的均值,即pollutantmean("specdata", "polltant2", 70:72)
题目要求其指明CSV文件的位置,我却是直接将CSV的位置即specdata文件夹给用进去了,所以我比较纠结这个directory参数到底如何指明想要的目录,请路过的们帮忙解答,谢谢!