【发布时间】:2014-11-17 19:58:52
【问题描述】:
作为 R 编程课程的作业,我必须编写一个函数,该函数采用数据文件目录和完整案例的阈值,并计算每个文件中两列(硫酸盐和硝酸盐)之间的相关性,其中完全观察到的病例大于阈值。该函数应返回满足阈值要求的监视器的相关向量
我在 MACOSX 10.9.5 上运行 R 版本 3.1.1(通过 R studio) 这是我的代码
corr <- function(directory, threshold = 0) {
filenames <- list.files(directory, pattern = "*.csv", full.names = TRUE)
cors <- numeric()
for (i in seq_along(filenames)) {
tempDF <- read.csv(filenames[i])
if(nrow(tempDF[complete.cases(tempDF),]) > threshold){
j <- length(cors) + 1
cors[j] <- cor(tempDF$sulfate, tempDF$nitrate, use = "na.or.complete")
}
}
return(cors)
}
代码的预期输出如下所示:
cr <- corr("specdata", 150)
head(cr)
[1] -0.01895754 -0.14051254 -0.04389737 -0.06815956 -0.12350667 -0.07588814
但是,当我在我的代码上运行 cr 时,我得到了错误:
Error in cor(tempDF$sulfate, tempDF$nitrate, use = "na.or.complete") : unused argument (use = "na.or.complete")
我尝试了各种解决方法,但均无济于事。将 na.or.complete 替换为 na.rm 或 complete.cases 会产生相同的错误。一些建议将不胜感激!
运行 args(cor) 输出:函数(目录,阈值 = 0)NULL
【问题讨论】:
-
您能否编辑您的问题以包含
args(cor)的输出?我猜你无意中重新定义了cor。 -
无法复制。除了 Thomas 的建议,请发布您的操作系统和 R 版本。
-
感谢您的输入,我在编辑中包含了信息
-
rm(cor)然后再试一次。您在之前的尝试中命名为corrcor -
我怀疑您使用的是不同的
cor函数(来自不同的包)。environment(cor)返回什么?对于我们大多数人来说,它是:<environment: namespace:stats>
标签: r function correlation