【发布时间】:2022-01-02 20:21:20
【问题描述】:
我正在学习 julia,我刚刚发现了这一行:
if(any(mach_df[start_slot:(start_slot + task_setup_time), Symbol(machine)].== 0))
这是什么意思?,我知道 any 是一个函数,如果参数的每个值都为真,则返回真,但我就是不明白括号里面是什么。
问候
【问题讨论】:
标签: dataframe indexing julia any
我正在学习 julia,我刚刚发现了这一行:
if(any(mach_df[start_slot:(start_slot + task_setup_time), Symbol(machine)].== 0))
这是什么意思?,我知道 any 是一个函数,如果参数的每个值都为真,则返回真,但我就是不明白括号里面是什么。
问候
【问题讨论】:
标签: dataframe indexing julia any
让我们由内而外地工作:
mach_df[start_slot:(start_slot + task_setup_time), Symbol(machine)] 从start_slot:(start_slot + task_setup_time) 范围和名为Symbol(machine) 的列中选择您的行(Symbol 很可能不需要,但我需要查看您的源代码才能准确告诉您);结果你得到一个向量。0,mach_df[start_slot:(start_slot + task_setup_time), Symbol(machine)] .== 0 会为您提供另一个具有 true 的向量。true,any 部分将返回 true。一种更高级(和高效)的编写方式是:
any(==(0), @view mach_df[start_slot:(start_slot + task_setup_time), Symbol(machine)])
但我不确定您的用例是否需要性能。
【讨论】:
[:, [Symbol(machine)]] 创建一个数据框(不是原始问题中的向量,因为列选择器包含在 [、] 中),其中包含一列并在您使用 @ 时选择所有行987654334@ 作为行选择器。通常这个操作会写成select(data_set["machines_availability"], Symbol(machine))。