【问题标题】:load a large text file to a list in R将大文本文件加载到 R 中的列表中
【发布时间】:2013-02-15 01:41:48
【问题描述】:

所以我有一个文本文件,其中包含正确格式的数据,它应该在 R 的列表中,但它是 14 Mb,显然 2Mb 是一个限制?我需要将此文本文件作为列表加载到 R 中。

这里有另一个帖子,但是那个命令(见下文)只是出错了

inlist <- strsplit(readLines("myList.txt"), "[[:space:]]+")

谢谢 我的意思是它的样子,因为它在这里开始的方式很大

structure(list(inputsTrain = structure(c(-73, -69, -48, 13, -86, -147, -65, -71, -32, 100, -73, -196, -102, 37, 14, 55, ........ 

【问题讨论】:

  • “以正确的格式应该是 R 中的列表”是什么意思?请为您的问题制作一个可重现的示例。 (just errors out 是什么意思?你从哪里得到这个2mb 限制?
  • 我现在在内存中有一个 871,061,080 字节的文件,它只占了总空间的一小部分。我过去有 7 MB 行和 100 列的文件,所以无论您想象什么限制,它都没有您听说的那么小。
  • 将它粘贴到这里是一种巨大的方式。基本上有一个旧包对数据集进行某种操作并以某种方式创建一个列表。我使用了这个函数的输出来处理我的数据,所以我可以使用这个列表。
  • 好的@DWin你如何将文本文件制作成一个有效的列表? thx 我只知道因为它告诉我,2mb 限制我不是凭空拉出来的;我的电脑是 32 gig ram 的顶级 mac
  • 我会将其与readLines() 一起引入,然后根据需要对其进行解析。如果它具有特定的结构,则可能有一个功能可以做到这一点。细节,我们需要细节。

标签: r list text large-files


【解决方案1】:

看来你的数据是dput(mylist, file = 'mylist.txt')的结果

我建议使用dput 的倒数,即dget

inlist <-dget('mylist.txt')

它只是

的包装器
eval(parse(file = 'mylist.txt'))

我已经在一个 9mb 的文件上进行了测试,没有出现错误或警告。

例如

dput(as.list(seq_len(1e6)), 'foo')
# foo is a 9.3 megabyte file
x <- dget('foo')
# works nicely

以后不要将R对象保存为ascii表示,而是使用saveRDS保存序列化版本,readRDS可以读取

【讨论】:

    猜你喜欢
    • 2012-03-20
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    相关资源
    最近更新 更多