A prose description of your input and what you are trying to do is not a good way to present a question like this. You should provide a reprex.
When looking for text you have to be really precise... by word do you mean a whole word or an embeded word... would the text "tvs" be a match for "tv" in your test.
Here is some info about reprexs and using them.
A prose description isn't sufficient, you also need to make a simple reprex that:
Builds the input data you are using.
The function you are trying to write, even if it doesn't work.
Usage of the function you are trying to write, even if it doesn't work.
Builds the output data you want the function to produce.
You can learn more about reprex's here:
Right now the is an issue with the version of reprex that is in CRAN so you should download it directly from github.
Until CRAN catches up with the latest version install reprex with
devtools::install_github("tidyverse/reprex")
if this gives you an error saying that devtools is not available then use
install.packages("devtools")
and try again.
In any case the reprex shows one way to use regular expressions to create the ismedia column.
suppressPackageStartupMessages(library(tidyverse))
df <- tribble(~UserName, ~Bio,
"apple", "tv",
"radio", "television",
"orange", "blue")
Bio_pat <- "\\b(news|reporter|journalist|radio|tv|television)\\b"
UserName_pat <- "\\b(news|tv)\\b"
mutate(df, ismedia = str_detect(UserName, UserName_pat) | str_detect(Bio, Bio_pat))
#> # A tibble: 3 x 3
#> UserName Bio ismedia
#> <chr> <chr> <lgl>
#> 1 apple tv TRUE
#> 2 radio television TRUE
#> 3 orange blue FALSE
Created on 2018-03-26 by the reprex package (v0.2.0).