Добавить столбец в DataFrame в sparkR

Я хотел бы добавить столбец, заполненный символом N в DataFrame в SparkR. Я бы сделал это с кодом, отличным от SparkR:

df$new_column <- "N"

Но с SparkR я получаю следующую ошибку:

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

Я пробовал безумные вещи, чтобы управлять им, мне удалось создать столбец, используя другой (существующий) столбец с df <- withColumn(df, "new_column", df$existing_column), но эта простая вещь, нет ...

Любая помощь ?

Спасибо.


person François M.    schedule 19.05.2016    source источник
comment
Единственное, что я знаю для этого, - использовать ifelse с одинаковым возвращаемым значением для обоих условий. Итак df$new <- ifelse(condition, 'N', 'N').   -  person mtoto    schedule 19.05.2016
comment
Сработал, большое спасибо (поставьте это как ответ, если вы хотите, чтобы я его подтвердил)   -  person François M.    schedule 19.05.2016


Ответы (2)


Прямым решением будет использование функции SparkR::lit():

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

Изменить 17.07.2019

В более новых версиях Spark также работает следующее:

df1$new_column <- "N"
df1[["new_column"]] <- "N"
person Dmitriy Selivanov    schedule 19.05.2016
comment
Хороший! Не знал о lit(), удалю свой ответ, когда OP примет ваш. - person mtoto; 20.05.2016
comment
Как добавить столбец с НП? - person François M.; 14.06.2016
comment
Когда я пытаюсь выполнить ту же задачу df <- withColumn(df, "col", lit(NA)), а затем returnstr(df), я получаю следующую ошибку: Error in FUN(X[[i]], ...) : Unsupported data type: null. Я могу открыть новый вопрос, но подумал, что @DmitriySelivanov или @fmalaussena могут знать ответ после работы с проблемой. - person kathystehl; 15.07.2016
comment
df <- withColumn(df, "col", lit("NA")) должен работать (с " " вокруг NA) - person François M.; 18.07.2016

Есть более простой способ использовать SparkR::lit(), который более точно имитирует синтаксис, который вы пробовали сначала:

df$new_column <- lit("N")
person data princess    schedule 29.06.2018