【问题标题】:R: Preallocate memory for stringsR:为字符串预分配内存
【发布时间】:2016-07-01 09:44:30
【问题描述】:

我正在迭代地将很长的字符串连接在一起。

s = ""
for (i in 1:10^4)
{
   ############################
   ## Construct 'LongString' ##
   ############################

   s = paste0(s,LongString)
}

这个过程非常缓慢,因为在每次调用paste0 函数时,R 都会重新分配内存。有没有办法预先分配s的内存,然后只填充对象?

【问题讨论】:

  • 用所有部分填充character(10^4),然后使用带有collapse 参数的paste() 调用...?
  • 哦,太好了!这将是一个我没有想到的简单解决方案。我想你可以从你的评论中做出答案

标签: r string performance memory-management


【解决方案1】:

一个简单的选择:

s <- character(10^4)
for (i in 1:10^4){
   s[i] <- <build some string>
}
result <- paste(s,collapse = "")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 2016-03-25
    • 2018-06-16
    • 2012-07-10
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    相关资源
    最近更新 更多