Julia:在为子集数据帧创建函数时无效的赋值位置

问题描述 投票:0回答:1

我正在朱莉娅创建一个函数。它使用数据帧(称为窗口)和两个字符串(A和B)作为输入和子集,使用给定的变量:

function calcs(window, A, B):
     fAB=size(window[(window[:ref].==A).&(window[:alt].==B),:])[1]
end

但我得到错误:

syntax: invalid assignment location ":fAB"

Stacktrace:
 [1] include_string(::String, ::String) at ./loading.jl:522

我已经尝试在函数之外运行代码(预先分配了变量A="T"B="C",如下所示:

fAB=size(window[(window[:ref].==A).&(window[:alt].==B),:])[1]

这很好。我是朱莉娅的新手,但找不到这个问题的答案。有人可以帮忙吗?

dataframe julia subset
1个回答
3
投票

好像你来自Python世界。在Julia中,您不需要在函数定义中添加:。这将很好:

function calcs(window, A, B)
     fAB=size(window[(window[:ref].==A).&(window[:alt].==B),:])[1]
end

当Julia在函数定义的第一行遇到:时,它继续解析生成:fAB符号的以下行中的表达式。

编辑:在Julia 0.7中,解析器检测到此问题。这是将原始代码复制粘贴到REPL的结果:

julia> function calcs(window, A, B):
            fAB=size(window[(window[:ref].==A).&(window[:alt].==B),:])[1]
ERROR: syntax: space not allowed after ":" used for quoting

julia> end
ERROR: syntax: unexpected "end"
© www.soinside.com 2019 - 2024. All rights reserved.