gpt4 book ai didi

r - 读取单列 CSV 文件的更快方法

转载 作者:行者123 更新时间:2023-12-03 15:29:10 32 4
gpt4 key购买 nike

我正在尝试阅读 CSV 的单列文件到 R尽快。我希望将标准方法减少到将列放入 RAM 所需的时间 10 倍。

我的动机是什么?我有两个文件;一个叫Main.csv这是 300000 行和 500 列,其中一个名为 Second.csv这是 300000 行和 5 列。如果我 system.time()命令 read.csv("Second.csv") ,需要 2.2 秒。现在,如果我使用以下两种方法之一来读取 Main.csv 的第一列(这是 Second.csv 大小的 20%,因为它是 1 列而不是 5 列),这将花费 40 多秒。 这与读取整个 600 兆字节文件所需的时间相同 ——显然不能接受。

  • 方法一
    colClasses <- rep('NULL',500)

    colClasses[1] <- NA
    system.time(
    read.csv("Main.csv",colClasses=colClasses)
    ) # 40+ seconds, unacceptable
  • 方法二
     read.table(pipe("cut -f1 Main.csv")) #40+ seconds, unacceptable

  • 如何减少这个时间?我希望得到一个 R解决方案。

    最佳答案

    我会建议

    scan(pipe("cut -f1 -d, Main.csv"))

    这与原始提案( read.table(pipe("cut -f1 Main.csv")) )有几个不同的地方:
  • 因为文件是逗号分隔的,而且 cut默认情况下采用制表符分隔,您需要指定 d,指定逗号分隔
  • scan()read.table快得多用于简单/非结构化数据读取。

  • 根据 OP 的评论,这大约需要 4 秒而不是 40+ 秒。

    关于r - 读取单列 CSV 文件的更快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19743271/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com