【发布时间】:2016-10-27 11:57:54
【问题描述】:
我有一堆像
这样的字符串string_example="hi 5eme elephant 4eme dark I am"
我想映射这些值
values_to_map=c("2eme","3eme","4eme","5eme")
给那些
new_values=c("2e","3e","4e","5e")
这是一个效果很好的解决方案,但我发现它有点乏味,我想知道是否有更简单的方法无需其他库的帮助(出于某些原因,我需要只使用 RBase 除了 fastmatch 库)。我也不想使用正则表达式,因为我得到了数千万个字符串,而且速度很慢。
library (fastmatch)
string_example="hi 5eme elephant 4eme dark I am"
string_example=str_split(string_example,pattern = " ")[[1]]
to_change=fmatch(string_example,values_to_map)
index=which(!is.na(to_change))
values=new_values[to_change[!is.na(to_change)]]
string_example[index]=values
【问题讨论】:
-
“如何在不使用螺丝刀的情况下拧螺丝?” — 也称为:您的要求毫无意义。 (关于正则表达式:你检查过它实际上很慢吗?正则表达式 可以 被实现得非常快(与手动字符串处理相当),尽管不幸的是许多库不是。)
-
这可能是@KonradRudolph 的家庭作业。没有任何工作会产生这样的限制。
-
@hrbrmstr 是的:我抱怨的是课程要求,而不是 OP,他只是运气不好。
标签: r string dictionary