Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R-studio中分析大型数据集的代码未完成执行。这是内存问题吗?_R_Large Data - Fatal编程技术网

在R-studio中分析大型数据集的代码未完成执行。这是内存问题吗?

在R-studio中分析大型数据集的代码未完成执行。这是内存问题吗?,r,large-data,R,Large Data,我使用的是联想笔记本电脑,CPU@2.20GHz,7.86GB可用内存,64位Windows8。 我在R studio中分析的数据集通常超过250000行。该函数读取一个表(称为ppt)并遍历该表的所有行,并通过while循环体中的语句做出决策: while (i < (length(ppt[,1]) - 192)) { print(i) . . . . i = i+1 } while

我使用的是联想笔记本电脑,CPU@2.20GHz,7.86GB可用内存,64位Windows8。 我在R studio中分析的数据集通常超过250000行。该函数读取一个表(称为ppt)并遍历该表的所有行,并通过while循环体中的语句做出决策:

while (i < (length(ppt[,1]) - 192)) {
        print(i)
        .
        .
        .
        .
        i = i+1
    }
while(i<(长度(ppt[,1])-192)){
印刷品(一)
.
.
.
.
i=i+1
}
在运行代码几个小时而没有完成它之后,我在函数中插入了print(I)来跟踪它。 对于一个有294991行(大小=6.17MB)的表,我在大约14秒内从20行到270781行,然后它停止并执行,不再打印我,我假设代码不再分析,但仍在运行。事实上,为了继续使用R studio,我必须点击停止按钮

然后我删除了这个数据集中的一些行,使它有147635行。同样的事情,但现在我从20到147400(大约在8秒钟内),似乎仍在工作和打印no i

我仍然缩短了数据,有37000行。现在,它一直到最后一个,并完成运行

样本数据:

> ppt<- read.csv("Flow_pptJoint - Copy - Copy.csv")
> ppt[60:70,]
              date precip flow NA.
60 12/1/2003 14:45     NA   85  NA
61 12/1/2003 15:00     NA   85  NA
62 12/1/2003 15:15     NA   85  NA
63 12/1/2003 15:30     NA   85  NA
64 12/1/2003 15:45     NA   85  NA
65 12/1/2003 16:00     NA   83  NA
66 12/1/2003 16:15     NA   83  NA
67 12/1/2003 16:30     NA   83  NA
68 12/1/2003 16:45     NA   83  NA
69 12/1/2003 17:00     NA   83  NA
70 12/1/2003 17:15     NA   83  NA
>ppt-ppt[60:70,]
日期精确流量NA。
60/12/1/2003 14:45北美85北美
61 12/1/2003 15:00北美85北美
62/12/1/2003 15:15北美85北美
63 12/1/2003 15:30北美85北美
64 12/1/2003 15:45北美85北美
65 12/1/2003 16:00北美83北美
66 12/1/2003 16:15北美83北美
67 12/1/2003 16:30北美83北美
68 12/1/2003 16:45北美83北美
69 12/1/2003 17:00北美83北美
70 12/1/2003 17:15北美83北美

我想知道这是否是一个记忆问题,如果是的话,我该如何处理这个问题

考虑到您的硬件,您似乎不太可能面临内存问题(顺便说一句,为了更准确地了解数据的大小,通常需要提供列和行)。此外,内存问题通常以“错误:无法分配内存”或“错误分配”或类似的内容结束

这似乎是一个无止境的循环。检查您的while语句以及它们被卡住的特定数据行。 执行此操作的一个选项是在卡住的循环迭代中使用
browser
语句


在一般情况下,循环在R中是非常无效的。在可能的情况下,考虑其他方法(也许<代码> DDLUP < /代码>,使用自定义函数来计算语句?)。< / P>使用任务管理器检查内存使用。然而,这个
while
循环肯定是写得很糟糕的R代码的标志,预计会很慢。R不是C,即使在那里,您也会使用
for
循环(但您可能根本不应该使用显式R循环)。展示你的代码,人们就会向你展示更好的选择。感谢罗兰的回复。我没有显示我的代码,因为由于有几个嵌套的if语句,所以我很难用一种可以理解的方式解释它(因为我写这篇文章是为了完成水文学领域的一项非常具体的任务)。虽然我同意你的观点,必须有更好的方法来编写代码以完成相同的任务,但我对编程非常陌生(不超过5个月),这是我发现的唯一一种在循环体中更改循环索引的方法。感谢您的回复。事实上,while循环中的重复循环在每次接近数据结尾时都是无止境的。我用上面提到的一个浏览器声明解决了这个问题。感谢您推荐plyr套餐。虽然我不认为它对我当前的代码有用,但它可能对未来的解决方案有用。非常感谢。