当read.csv命令的空间不足时,R是否会产生警告

时间:2015-02-06 18:41:20

标签: r csv memory memory-management

这个问题非常简单,甚至可能是愚蠢的,但我在谷歌上找不到答案。我正在尝试使用以下命令将.txt文件读入R:

data <- read.csv("perm2test.txt", sep="\t", header=FALSE, row.names=1, col.names=paste("V", seq_len(max(count.fields("perm2test.txt", sep="\t"))), sep=""), fill=TRUE)

我有col.names命令的原因是因为.txt文件中的每一行都有不同的观察数。我已经在一个小得多的文件上测试了它并且它可以工作。但是,当我在我的实际数据集(只有48MB)上运行它时,我不确定它是否正常工作...我不确定的原因是因为我没有收到错误消息,但它有此时已经“运行”超过24小时(只是上面的read.csv命令)。它是否有可能内存不足而且它不会输出警告?

我环顾四周,我知道有人说有些功能可以减小尺寸并删除不需要的线条,但说实话我不认为这个文件太大了,不幸的是我确实需要文件中的每一行......(它实际上只有70行,但有些行包含多达100k条目,而其他行可能只有100条)。有什么想法发生了什么?

1 个答案:

答案 0 :(得分:0)

显然未经测试但应该给你一些代码来修改:

datL <- readLines("perm2test.txt") # one line per group
# may want to exclude some lines but question is unclear
listL <- lapply(datL, function(L) read.delim(text=L, colCasses="numeric") )
# This is a list of values by group
dfL  <- data.frame( vals = unlist(listL), 
# Now build a grouping vector that is associated with each bundle of values
                    groups= rep( LETTERS[1:length(listL)] ,
                                 sapply(listL, length) )
 # Might have been able to do that last maneuver with `stack`.

library(lattice)
bwplot( vals ~ groups, data=dfL)