R:在向量模式下使用mgsub时如何防止内存溢出?

2023-12-12

我有一个很长的字符向量(例如“Hello World”等),170 万行,我需要使用两个向量之间的映射来替换其中的单词,并将结果保存在同一个向量中。这是一个简单的例子:

library(qdap)
line = c("one", "two one", "four phones")
e = c("one", "two")
r = c("ONE", "TWO")
line = mgsub(e,r,line)

Result:

[1] "ONE"  "TWO ONE" "four phONEs"

如您所见,每个实例e[j]在线被替换为r[j]并且只有r[j]。 它在相对较小的“线路”上工作得很好并且e->r词汇长度,但是当我继续前进时length(line) = 1700000 and length(e) = 750,我达到了总分配内存:

Reached total allocation of 7851Mb: see help(memory.size)

有什么想法如何避免它?


The stringi包为许多字符串操作提供了快速一致的工具:

stri_replace_all_regex(line, paste0("\\b", e, "\\b"), r, vectorize_all = FALSE)

该死的几乎与其他方法一样快(相差几分之一秒)并且更直接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R:在向量模式下使用mgsub时如何防止内存溢出? 的相关文章

随机推荐