【问题标题】:Add column to DataFrame in sparkR在 sparkR 中将列添加到 DataFrame
【发布时间】:2016-09-16 14:17:13
【问题描述】:

我想在 SparkR 的 DataFrame 中添加一个用字符 N 填充的列。我会用非 SparkR 代码那样做:

df$new_column <- "N"

但使用 SparkR,我收到以下错误:

Error: class(value) == "Column" || is.null(value) is not TRUE

我已经尝试过疯狂的事情来管理它,我能够使用另一个(现有的)带有df &lt;- withColumn(df, "new_column", df$existing_column) 的列来创建一个列,但是这个简单的事情,不...

有什么帮助吗?

谢谢。

【问题讨论】:

  • 对此我知道的唯一技巧是在两个条件下使用具有相同返回值的ifelse。所以df$new &lt;- ifelse(condition, 'N', 'N').
  • 工作,非常感谢(如果您希望我验证它,请将其作为答案)

标签: r sparkr


【解决方案1】:

直接的解决方案是使用SparkR::lit() 函数:

df_new = withColumn(df, "new_column_name", lit("N"))

2019 年 7 月 17 日编辑

在较新的 Spark 版本中,以下内容也有效:

df1$new_column <- "N"
df1[["new_column"]] <- "N"

【讨论】:

  • 不错!不知道 lit(),当 OP 接受你的答案时,我会删除我的答案。
  • 我如何添加一个充满 NA 的列?
  • 当我尝试执行相同的任务时,df &lt;- withColumn(df, "col", lit(NA)),然后返回str(df),我收到以下错误:Error in FUN(X[[i]], ...) : Unsupported data type: null。我可以提出一个新问题,但我认为@DmitriySelivanov 或@fmalaussena 可能会在处理完该问题后知道答案。
  • df &lt;- withColumn(df, "col", lit("NA")) 应该可以工作(" "NA 周围)
【解决方案2】:

有一种更简单的方法来使用SparkR::lit(),它更接近于您首先尝试的语法:

df$new_column <- lit("N")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-16
    • 2017-06-07
    • 2021-05-02
    • 2021-10-31
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多