使用编码检查向量是否包含非常长的字符串

时间:2019-02-05 15:10:39

标签: r encoding

我有一个大约100个字符的长字符串(我们称它为str_1)和一个包含大约100 000字符串的向量(我们称它为vec),如下所示。请注意,仅以下示例为例,下面的向量只有3个值:

str_1 <- "1-3-23-4-45-6-23-1-5-6-34-4-7-8-78-6.767-56-8-56-545-4-34-23--23-34434-2-34-32432-5-4.3-2.12-12.4-12.34"
vec <- c("1-3-23-4-45-6-23-1-5-6-34-4-7-8-78-6.767-56-8-56-545-4-34-23--23-34434-2-34-32432-3-4.3-2.12-12.4-12.34",
"1-3-23-4-45-6-23-1-5-6-34-4-7-8-78-6.767-56-8-56-545-4-34-23-3-23-34434-2-34-32432-5-4.3-2.22-12.4-12.34",
"1-3-23-4-45-6-23-1-5-6-34-4-7-8-78-6.767-56-8-56-545-4-34-23-3-23-34434-2-34-32462-5-4.3-2.12-12.4-12.34")

我要检查我的载体是否包含str_1。正确执行以下代码是否是一种好习惯?

str_1 %in% vec

还是通过将每个字符串编码为较短的值来更好的方法?如果是的话,怎么办? 我主要担心的是要使用过多的内存。

1 个答案:

答案 0 :(得分:1)

这听起来与上一篇文章(Encoding name strings into an unique number)相似,在该文章中,为每个字符串赋予唯一标识符的最简单解决方案是使用哈希。如果这也是唯一确定情况下字符串的最简单方法,那么看来在内存方面没有太多好处,因此我将按照您的建议使用str_1 %in% vec