首页 > 解决方案 > 在 R 中提取/读取文件时使用逗号

问题描述

我应该编写一个函数,该函数根据文件的变量值与阈值的比较来提取信息,并且我正在遵循指南寻求帮助。

我写的代码如下:

    corr1 = function(directory, threshold, id = 1:332) {
        path <- list.files(path = directory, pattern = ".csv", full.names = TRUE)
        total <- numeric()
  

       for(i in id) {
    if(i) {
  read <- read.csv(path[i])
    }
    
    data <- read[complete.cases(read)]
    if(nrow(data) > threshold) {
      total <- c(total, cor(data["sulfate"], data["nitrate"]))
    }
  }
  total
}

运行时显示以下错误:

Error in `[.data.frame`(read, complete.cases(read)) : 
  undefined columns selected

但是通过查阅指南,我看到了一个不同之处,如下所示: 而不是data <- read[complete.cases(read)] 它被写成data <- read[complete.cases(read),]

这使程序成功运行。

有人可以解释一下使用“,”的原因以及它是如何使程序运行的吗?

标签: rfunctioncommaread.csv

解决方案


read是一个带有行和列的data.frame。data.frame 中的项目可以用方括号引用。例如,第 2 行,第 3 列可以作为read[2, 3]第一个点访问,如果是行索引,第二个是列索引。您正在做的complete.cases是获取完整行的逻辑向量(没有缺失值)。您想将该向量插入括号 [此处,] 中的行点。如果没有逗号,您会将其视为矢量,但您实际上想要索引 2D data.frame。


推荐阅读