Julia 基于另一个数组选择字符串数组值

Julia 基于另一个数组选择字符串数组值,julia,Julia,我可以选择与值相等的数据 data = rand(1:3, 10) value = 2 data .== value 或等于具有 values = [1, 2] in.(data, (values,)) 最后一个是泛型的,也适用于标量:in.(数据,(值,)) 但是,这适用于Int,但泛型不适用于String值: data = rand(["A", "B", "C"], 10) value = "B" data .== value values = ["A","B"] in.(data, (

我可以选择与值相等的数据

data = rand(1:3, 10)
value = 2
data .== value
或等于具有

values = [1, 2]
in.(data, (values,))
最后一个是泛型的,也适用于标量:
in.(数据,(值,)

但是,这适用于
Int
,但泛型不适用于
String
值:

data = rand(["A", "B", "C"], 10)
value = "B"
data .== value
values = ["A","B"]
in.(data, (values, ))
in.(data, (value, ))
ERROR: use occursin(x, y) for string containment
String
s是否有通用方法

对于一般的
val
输入,我现在编写以下内容,但我觉得一定有更好的解决方案

isa(val, AbstractArray) ? in.(data, (val,)) : data .== val

背景:我正在创建一个函数,用于从数据帧中选择行(并对其执行某些操作),但我希望同时允许值列表和单个值。

下面是一个值得了解的技巧:

[x;]
现在-如果
x
是一个数组,它将保持为一个数组。如果
x
是标量,它将成为一个1元素数组。这正是你需要的

这样你就可以写作了

in.(data, ([val;],))
缺点是它分配了一个新的数组,但我猜
val
很小,而且它不用于性能关键型代码?如果代码对性能至关重要,我认为最好通过单独的分支来处理标量和数组