Erro com o uso do for()

Tenho uma base de vídeos relacionados a Flutter no YouTube e quero selecionar todos os canais que possuem o termo “Flutter” em seu nome. Criei um campo do tipo logical que deve conter TRUE quando o termo está presente. Porém, estou com um erro que não sei resolver, relacionado ao for().

Erro:
Error in for (. in linha) 1:nrow(flutter_videos_filtrada) :
4 arguments passed to ‘for’ which requires 3

Código:
contem_palavra ← logical() #criando um campo lógico
resposta8 ←
flutter_videos_filtrada %>%
select(channelTitle, channelId) %>%
mutate(contem_palavra) %>%
for (linha in 1:nrow(flutter_videos_filtrada)){
if (str_detect(flutter_videos_filtrada$channelTitle,
regex(“flutter”, ignore_case = TRUE)) == TRUE){
contem_palavra = TRUE}
else {
contem_palavra = FALSE
}
} %>%
filter(contem_palavra = TRUE) %>%
group_by(channelTitle)

Bom dia Kaique!

Nesse caso, o melhor não é usar o for(), e sim a função case_when() do pacote dplyr: A general vectorised if — case_when • dplyr

Fiz um exemplo com a base do starwars que está no pacote dados: Translate Datasets to Portuguese • dados

Creio que com o exemplo você conseguirá replicar o seu caso:

# carregando o dplyr
library(dplyr)
# instalando o pacote dados
# remotes::install_github("cienciadedatos/dados")

dados::dados_starwars %>%
# cria uma nova coluna chamada cabelo castanho, que:
  dplyr::mutate(cabelo_castanho = dplyr::case_when(
# quando detectar o texto castanho na coluna cor_do_cabelo,
# deverá armazenar TRUE na coluna cabelo_castanho
    stringr::str_detect(
      string = cor_do_cabelo,
      pattern = stringr::regex("castanho", ignore_case = TRUE)
    ) ~ TRUE,
# todos os outros casos (ou seja, que não foi encontrado o
# texto 'castanho' na coluna cor_do_cabelo) receberão 
# o valor FALSE na coluna cabelo_castanho
    TRUE ~ FALSE
  )) %>%
  dplyr::select(nome, cor_do_cabelo, cabelo_castanho)
#> # A tibble: 87 × 3
#>    nome               cor_do_cabelo   cabelo_castanho
#>    <chr>              <chr>           <lgl>          
#>  1 Luke Skywalker     Loiro           FALSE          
#>  2 C-3PO              <NA>            FALSE          
#>  3 R2-D2              <NA>            FALSE          
#>  4 Darth Vader        Nenhum          FALSE          
#>  5 Leia Organa        Castanho        TRUE           
#>  6 Owen Lars          Castanho, Cinza TRUE           
#>  7 Beru Whitesun lars Castanho        TRUE           
#>  8 R5-D4              <NA>            FALSE          
#>  9 Biggs Darklighter  Preto           FALSE          
#> 10 Obi-Wan Kenobi     Ruivo, Branco   FALSE          
#> # … with 77 more rows

Created on 2021-10-25 by the reprex package (v2.0.1)

Segue uma adaptação do seu código (é necessário checar, como não tenho a base não consegui reproduzir):

resposta8 <- flutter_videos_filtrada %>%
  select(channelTitle, channelId) %>%
  mutate(contem_palavra = dplyr::case_when(
    stringr::str_detect(
      string = channelTitle,
      pattern = stringr::regex("flutter", ignore_case = TRUE)
    ) ~ TRUE,
    TRUE ~ FALSE
  )) %>%
  filter(contem_palavra = TRUE) %>%
  group_by(channelTitle)

Abraços