【问题标题】:How to read csv file into an Array of arrays in scala如何将csv文件读入scala中的数组数组
【发布时间】:2015-11-10 09:23:57
【问题描述】:

我正在尝试读取 csv 文件并将其作为双精度数组 (Array[Array[Double]]) 返回。很清楚如何逐行读取文件并立即将其打印出来,但不知道如何将其存储在二维数组中。

def readCSV() : Array[Array[Double]] = {
    val bufferedSource = io.Source.fromFile("/testData.csv")
    var matrix :Array[Array[Double]] = null
    for (line <- bufferedSource.getLines) {
        val cols = line.split(",").map(_.trim)
        matrix = matrix :+ cols
    }
    bufferedSource.close
    return matrix
}

有一些类型问题,然后意识到我没有做我认为我正在做的事情。任何帮助我走上正轨的帮助将不胜感激。

【问题讨论】:

    标签: arrays scala csv matrix multidimensional-array


    【解决方案1】:

    您的问题似乎已经得到解答。因此,顺便说一句,您可以像这样以更大规模的方式编写代码:

    def readCSV() : Array[Array[Double]] = {
      io.Source.fromFile("/testData.csv")
        .getLines()
        .map(_.split(",").map(_.trim.toDouble))
        .toArray
    }
    

    【讨论】:

      【解决方案2】:

      1) 你应该从一个空数组开始,而不是null。 2) 使用运算符:+ 将项目附加到数组 3)由于您的结果类型是Array[Array[Double]],您需要将csv的字符串转换为Double

      def readCSV() : Array[Array[Double]] = {
          val bufferedSource = io.Source.fromFile("/testData.csv")
          var matrix :Array[Array[Double]] = Array.empty
          for (line <- bufferedSource.getLines) {
              val cols = line.split(",").map(_.trim.toDouble)
              matrix = matrix :+ cols
          }
          bufferedSource.close
          return matrix
      }
      

      【讨论】:

      • 谢谢!事实证明,这为您提供了行数组,而不是列数组,但将其转换为列并不需要太多。
      猜你喜欢
      • 2011-05-16
      • 1970-01-01
      • 2015-06-26
      • 2019-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多