“传球时有没有表现上的问题?”;沉重的;R中的对象?

“传球时有没有表现上的问题?”;沉重的;R中的对象?,r,memory,memory-management,R,Memory,Memory Management,假设我有一个1MB的数据帧。我将这个对象传递给函数1000次以进行一些计算。实际上,我只需要一行数据框来进行计算。如果只发送一行,计算强度是否会降低 R不会仅仅因为在函数中使用而复制对象,但如果函数复制了对象,则会使对象变得“沉重”。这取决于你想做什么。听起来一个简单的循环就足够了,只要访问对象存在时的一行即可。只有在修改变量时,R才会进行复制。即使如此,对于data.frames,如果修改一个变量,则只会重新分配该变量的指针(而不是其余数据的指针),因此如果遵循良好的习惯用法(预分配等),可能

假设我有一个1MB的数据帧。我将这个对象传递给函数1000次以进行一些计算。实际上,我只需要一行数据框来进行计算。如果只发送一行,计算强度是否会降低

R不会仅仅因为在函数中使用而复制对象,但如果函数复制了对象,则会使对象变得“沉重”。这取决于你想做什么。听起来一个简单的循环就足够了,只要访问对象存在时的一行即可。只有在修改变量时,R才会进行复制。即使如此,对于data.frames,如果修改一个变量,则只会重新分配该变量的指针(而不是其余数据的指针),因此如果遵循良好的习惯用法(预分配等),可能不会占用太多的内存。如果你真的很担心,确保你不担心不是瓶颈的事情。如果这是一个大问题,data.table提供就地修改。使用pryrµbenchmark进行快速模拟。最好的学习方法是这样做。R不会仅仅因为在函数中使用对象而复制对象,但如果函数复制了对象,那么你就在使对象“沉重”。这取决于你想做什么。听起来一个简单的循环就足够了,只要访问对象存在时的一行即可。只有在修改变量时,R才会进行复制。即使如此,对于data.frames,如果修改一个变量,则只会重新分配该变量的指针(而不是其余数据的指针),因此如果遵循良好的习惯用法(预分配等),可能不会占用太多的内存。如果你真的很担心,确保你不担心不是瓶颈的事情。如果这是一个大问题,data.table提供就地修改。使用pryrµbenchmark进行快速模拟。最好的学习方法是通过实践。