如何在 SparkR 中使用 AND 和 OR 编写逻辑列表达式?
How can I write logical Column expression with AND and OR in SparkR?
我需要根据其他几个列的一些逻辑标准将列添加到 SparkR(spark 版本 2.1.1)数据集。但是明显的解决方案(使用 && 或 ||)不起作用,我收到“无效 'x' 输入 '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'
我该怎么做?
为什么&&
?简单 &
工作正常:
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)
我需要根据其他几个列的一些逻辑标准将列添加到 SparkR(spark 版本 2.1.1)数据集。但是明显的解决方案(使用 && 或 ||)不起作用,我收到“无效 'x' 输入 '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'
我该怎么做?
为什么&&
?简单 &
工作正常:
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)