将具有阈值的循环输出绑定到R 3.3.1中的矢量



我正在学习Coursera R编程课程,在设置for循环结果与向量的绑定时遇到了问题。

我已经确保分析代码在单个表上工作,但我不完全确定如何使它绑定所有332值。

  corr <- function(directory, threshold = 0, id = 1:332) {
  filename <- list.files(directory, full.names = TRUE)
  a <- numeric()
  for(i in id) {
    tmp_data <- read.csv(filename[i])
    nobs <- sum(complete.cases(tmp_data))
    if(nobs < threshold) {
      a} else {
      nonas <- tmp_data[!is.na(tmp_data$sulfate) & !is.na(tmp_data$nitrate),]
      x <- corr(nonas$sulfate, nonas$nitrate)
      a[i] <- x
      }
  }
  a
}

当我运行此程序时,我会返回此错误:

> x <- corr("specdata", 20)
Error in list.files(directory, full.names = TRUE) : 
invalid 'path' argument 

在其他函数中,我对list.files行没有任何问题。我知道我做错了什么,但我想不通。

我想明白了。我在不知不觉中在代码中有一个递归。应该是cor((,而不是corr((。

corr <- function(directory, threshold = 0, id = 1:332) {
  filename <- list.files(directory, full.names = TRUE)
  a <- c()
  for(i in id) {
    tmp_data <- read.csv(filename[i])
    nobs <- sum(complete.cases(tmp_data))
    if(nobs > threshold) {
        nonas <- tmp_data[!is.na(tmp_data$sulfate) & !is.na(tmp_data$nitrate),]
        x <- cor(nonas$sulfate, nonas$nitrate)
        a[i] <- x
      }
  }
  b <- na.omit(a)
}

最新更新