好的,让我们在这里采用这个逻辑:
dummy = [1 2 3 4 5]
num_test = convert(Array{Int64},3 .== dummy)
我得到了结果:
0 0 1 0 0
如果我尝试匹配两个陈述:
num_test = convert(Array{Int64},3 .== dummy & 4 .== dummy)
它没有评估:
0 0 0 0 0
正如我写的那样,这是因为在.==
向量调用中它在相同的索引元素位置上寻找3 & 4
吗?
我可以在R中进行类似的操作。但是相同类型的逻辑没有转移到Julia,或者我使用的是不正确的语法Julia?
由于
答案 0 :(得分:3)
我假设您尝试执行的操作是评估3 .== dummy
和4 .== dummy
,然后比较两个元素。鉴于此,这里有两个问题:
1)操作顺序。您需要(3 .== dummy) & (4 .== dummy)
。
2)如果您使用的是最近的v0.6,则还应该看到弃用警告,因为从v0.7 +开始,您需要广播&
运算符。因此,请使用(3 .== dummy) .& (4 .== dummy)
。
我理解这个问题,转换为Vector{Int}
部分很好,应该按预期工作,尽管你可以写Int.((3 .== dummy) .& (4 .== dummy))
。
鉴于上述所有情况,您现在应该看到以下结果:
julia> Int.((3 .== dummy) .& (4 .== dummy))
1×5 Array{Int64,2}:
0 0 0 0 0
julia> Int.((3 .== dummy) .| (4 .== dummy))
1×5 Array{Int64,2}:
0 0 1 1 0
最后一点,我假设您故意将dummy
定义为单行Matrix
而不是Vector
。如果您希望最终输出为Vector
,则可以使用dummy = [1,2,3,4,5]