这是我在Stack Overflow上的第一篇文章,所以请耐心等待。到目前为止,我会尽力做到最合适!
我正在参加约翰霍普金斯大学的Coursera数据科学课程,所以我希望这可以为我想要实现的目标提供一些背景知识。 [具体来说,我的问题涉及课程2:第2周:编程作业1:第3部分]
我使用的是最近版本的R.
问题我正在尝试回答
编写一个函数,该函数获取数据文件的目录和完整案例的阈值,并计算correlation
和sulfate
之间nitrate
的监视位置,其中包含完全观察到的案例数(在所有变量上) )大于阈值。该函数应返回满足阈值要求的监视器的相关向量。如果没有监视器满足阈值要求,则该函数应返回长度为0的数字向量。
短版基本上,我必须创建的函数将读取整个.csv文件列表,如果每个文件中的完整案例/行数据大于指定的数量number,每个文件中两个变量之间的相关性将被添加到数字向量中。
我的步骤我尝试执行此操作的步骤是:
(1)创建一个空矢量来保存相关数据
(2)列出我需要阅读的目录中的文件
(3)读取每个文件,如果该文件中的完整案例数大于传递给函数的阈值,则添加两个变量之间的相关性(“sulfate
”,“{{1} }))到原始数字向量。
以下是我为尝试实现此目的而编写的代码:
nitrate
我希望这个函数返回一个数字向量,每个数字元素代表每个读取文件的一组变量的相关性。
例如,pollutantCorrelations <- function(threshold = 0) {
# Create an empty numeric vector to hold the data from this operation
correlations <- numeric()
# List the files that can be called on
fileList <- list.files(path = "C:/Users/amcco/Documents/Coursera/Data Science/Course 2. R Programming/Programming Assignment 1/specdata", pattern = ".csv")
for(i in fileList) {
data <- read.csv(fileList[i]) # Read each file in the list of files
# If the number of complete cases in 'data' is greater than the threshold, calculate it and append the correlation to the original vector
if(sum(complete.cases(data)) > threshold) {
correlations <- c(correlations, cor(data[,"sulfate"], data[,"nitrate"], use = "complete.obs"))
} # Do not have to include an else statement
correlations
}
}
但是,我收到以下通知:
[-0.6353, 0.4242, 0.35225, 0.356643, ...]
'NA':没有 文件或目录*
这很烦人,因为这个完全相同的目录和方法适用于以前的功能。我不相信该目录存在问题,但如果有人能帮我辨别这里出了什么问题,我将非常感激!
谢谢:)