=
является оператором присваивания, а не ==
(оператор сравнения)
if(str_detect(hashtags, "#datascienceinR") = FALSE)
^
Кроме того, вместо выполнения ==
FALSE лучше отрицать (!
)
!str_detect(hashtags, "#datascienceinR")
Третья проблема заключается в использовании if/else
, поскольку if/else
ожидает логический вектор длины 1 и не более одного. Здесь «хэштеги» - это вектор длины 3, а str_detect
также возвращает логический вектор такой же длины ИСТИНА / ЛОЖЬ. Итак, нам нужно обернуть с помощью all
all_hashtags <- if(all(!str_detect(hashtags, "#datascienceinR"))) {
append(hashtags, "#datascienceinR")
}
all_hashtags
#[1] "#data" "#datascience" "#datascienceiscool" "#datascienceinR"
Его также можно записать с помощью union
(при условии, что нет повторяющихся элементов)
hashtags <- union(hashtags, "datascienceinR")
Если есть являются повторяющимися элементами, и я хочу их сохранить, другой вариант: vunion
из vecsets
library(vecsets)
hashtags <- vunion(hashtags, "datascienceinR")