如何在SparkR中使用AND和OR编写逻辑列表达式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在SparkR中使用AND和OR编写逻辑列表达式?相关的知识,希望对你有一定的参考价值。

我需要根据几个其他列的一些逻辑标准将列添加到SparkR(spark版本2.1.1)数据集。但是显而易见的解决方案(使用&&或||)不起作用,我在'x && y'中出现“无效'x'类型”错误。例如,使用内置的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中使用AND和OR编写逻辑列表达式?的主要内容,如果未能解决你的问题,请参考以下文章

如何对 SparkR 数据框进行子集化

如何在 SSIS 派生列中的嵌套 if 条件表达式中使用 TRIM

如何使用逻辑运算符评估前缀表达式

如何在 PySpark 中编写条件正则表达式替换?

SparkR filterRDD 和 flatMap 不工作

使用 SparkR 计算地理距离