Как я могу написать выражение логического столбца с И и ИЛИ в SparkR?

Мне нужно добавить столбец в набор данных SparkR (spark версии 2.1.1) на основе некоторых логических критериев для нескольких других столбцов. Но очевидное решение (с использованием && или ||) не работает, я получаю сообщение об ошибке «invalid 'x' type in 'x && y'». Например, используя встроенный набор данных mtcars:

> dcars = as.DataFrame(mtcars)
> dcars$cool_enough <- dcars$cyl >= 6 && dcars$hp >= 180
Error in dcars$cyl >= 6 && dcars$hp >= 180 : invalid 'x' type in 'x && y'

Как я могу это сделать?


person Konstantin Svintsov    schedule 09.12.2017    source источник


Ответы (1)


Почему &&? Простой & работает нормально:

sparkR.version()
# "2.1.1"

dcars$cool_enough <- dcars$cyl >= 6 & dcars$hp >= 170 # changed 180 to 170 for demonstration purposes
head(dcars)

Результат:

   mpg cyl disp  hp drat    wt  qsec vs am gear carb cool_enough
1 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4       FALSE
2 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4       FALSE
3 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1       FALSE
4 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1       FALSE
5 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2        TRUE
6 18.1   6  225 105 2.76 3.460 20.22  1  0    3    1       FALSE

Альтернативно, это дает тот же результат:

dcars <- withColumn(dcars,"cool_enough", dcars$cyl >= 6 & dcars$hp >= 170)
person desertnaut    schedule 20.12.2017
comment
Я был уверен, что пробовал и тоже, и это не сработало.. Но теперь это работает, спасибо (я новичок в R, действительно не понимаю разницы). Большое спасибо за ответ! - person Konstantin Svintsov; 21.12.2017