【问题标题】:R's grepl in JuliaR 在 Julia 中的 grepl
【发布时间】:2017-04-13 18:38:15
【问题描述】:

我并不是要重新发明轮子。只是寻找一个搜索字符串或字符串向量并为找到匹配项的每个元素返回 true 的函数。这是我到目前为止所尝试的。

grepl(x::String, y)         = length(search(x, y))   > 0
grepl(x::Vector{String}, y) = length.(search(x, y)) .> 0
grepl(x::Vector{AbstractString}, y) = length.(search(x, y)) .> 0

示例用法:

v = string.('a':'z')
x = rand(v, 100) .* rand(v, 100) .* rand(v, 100)
grepl(convert(Vector{String}, x), "z")

好吧,如果我能让我的类型正常工作,这将是一个工作示例。基本上我可以使用 return 来选择其中包含 "z" 的元素。

【问题讨论】:

  • 你能举个简单的例子吗?

标签: julia grepl


【解决方案1】:

只需使用contains。在 0.6 上,您可以直接使用它与点广播:

julia> contains.(["foo","bar","baz"],"ba")
3-element BitArray{1}:
 false
  true
  true

在 0.5 上,您可以简单地将第二个参数包装在一个数组中:contains.(["foo","bar","baz"],["ba"])

【讨论】:

  • 我有时很难记住contains(x, a)x 是否包含a,反之亦然。在那种情况下,使用a ⊆ x 对我来说更清楚。上面代码的等价物是"ba" .⊆ ["foo", "bar", "baz"]。它调用的不是同一个代码,而是issubset,但性能似乎是一样的。
  • 请忽略我之前的评论。 issubset 不等于 contains。例如,"ba" ⊆ "abc" 返回true
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多