使用函数的结果访问julia数组

使用函数的结果访问julia数组,julia,Julia,我是朱莉娅的新手,有个问题。我有一个数组,y y = rand (5, 10) y [1. 1] = 0 运行此命令会给我一个错误 for j=1:d x_filt [j, 1] = y [j, findfirst (y [j, :])] end ERROR: syntax: missing separator in array expression 但事实并非如此 for j=1:d # fix to 1st obs if 1st tick is missing

我是朱莉娅的新手,有个问题。我有一个数组,y

y = rand (5, 10)
y [1. 1] = 0
运行此命令会给我一个错误

for j=1:d   
    x_filt [j, 1] = y [j, findfirst (y [j, :])]
end

ERROR: syntax: missing separator in array expression
但事实并非如此

for j=1:d   # fix to 1st obs if 1st tick is missing
    temp = findfirst (y [j, :])
    x_filt [j, 1] = y [j, temp];        
end 
有人能解释一下如何使第一个版本工作吗?或者至少解释一下为什么没有


谢谢

首先,我猜你的意思是
y[1,1]=0
?如果我使用
y[1.1]=0
,我会得到一个错误

Julia在某些上下文中具有空间敏感语法,在括号中很明显
[]
。 一些例子:

julia> max(1, 2)
2

julia> max (1, 2)
2

julia> [max(1, 2)]
1-element Array{Int64,1}:
 2

julia> [max (1, 2)]
1x2 Array{Any,2}:
 max  (1,2)

julia> [1 + 2]
1-element Array{Int64,1}:
 3

julia> [1 +2]
1x2 Array{Int64,2}:
 1  2
在第一个示例中,在

x_filt [j, 1] = y [j, findfirst (y [j, :])]
temp = findfirst (y [j, :])
被解释为两个空格分隔的项,
findfirst
(y[j,:])]
。朱莉娅接着抱怨说,它们之间用空格而不是逗号分隔

在第二个示例中,由于在中调用了
findfirst
,因此可以绕过此问题

x_filt [j, 1] = y [j, findfirst (y [j, :])]
temp = findfirst (y [j, :])
不再处于空间敏感上下文中

我建议在编写Julia代码时,千万不要在函数调用中的函数名和括号
)之间或在索引中的变量和括号
[
)之间加空格,因为在对空间敏感的上下文中,代码的处理方式会有所不同。例如,没有额外空格的第一个示例

for j=1:d   
    x_filt[j, 1] = y[j, findfirst(y[j, :])]
end

工作正常(前提是您首先正确定义
d
x_filt

非常感谢-非常感谢。