К счастью, вам нужно добавить только один символ: .
.Символ .
позволяет транслировать любую функцию Julia, даже такую, как ==
.Следовательно, ваш код будет выглядеть следующим образом:
df = DataFrame(a=[1,2,3], b=["x", "y", "z"])
df2 = df[df.a .== 2, :]
Без широковещательной рассылки пункт df.a == 2
возвращает false
, поскольку он буквально сравнивает массив [1,2,3] как единое целое,к скалярному значению 2. Массив формы (3,) никогда не будет равен скалярному значению 2 без широковещания, потому что размеры разные.Поэтому это предложение просто возвращает один false
.
Полученная ошибка говорит о том, что вы пытаетесь получить доступ к DataFrame с индексом false
, который не является допустимым индексом для DataFrame.с 3 рядами.При трансляции с .
вы теперь создаете массив Bool массива shape (3,), который является допустимым способом индексации DataFrame с 3 строками.
Подробнее о трансляции см. Официальную Juliaдокументация здесь .