R - Как исправить функцию с оператором if и несколькими условиями (факторные переменные) - PullRequest
0 голосов
/ 19 июня 2019

У меня есть df с двумя соответствующими столбцами с 1. словами различной длины и другим с 2.labels для слогов, оба являются факторными переменными.Теперь в третьем столбце (3. структура) я хочу добавить информацию о компонентах слога (гласный или согласный).Для этого я использую слово и метку слога как условия.

(word <- "dog", "parent", "extraordinary")
(labels <- "1", "2", "3","Final", "Mono")
(df <- data.frame(word,labels))

Я раньше использовал очень похожий код, и он работал, но теперь он больше не работает.Я недавно загрузил R (3.6.0) и не могу понять, в чем проблема.Я также обновил все пакеты, которые, по моему мнению, будут актуальны для этого, но все же не повезло.Я получаю только колонку только с резюме.Мой df также намного больше, хотя я не думаю, что это проблема.

Classes ‘rowwise_df’, ‘tbl_df’, ‘tbl’ and 'data.frame': 4458 obs. of  27 variables: 

Вот выдержка из того, как выглядит мой код:

getStructure <- function(word, labels) {
  if (str_detect(word, 'extraordinary') & labels == '2') {
    return ('CCV')  
  } else {
    return("CV")
  }
  }

df <- df %>%
  rowwise() %>% 
  mutate(structure =getStructure(word, labels))

пример того, что мне нужно:

|word  | labels | structure
---------------------------
|dog   | Mono   | CVC 
|parent| 1      | CV
|parent| Final  | CVC

Я хотел бы использовать функцию и указывать каждое слово и слог, когда это необходимо.После этого все остальное резюме.

Однако я получаю только один новый столбец с CV во всех строках, и это

Warning message:
In if (str_detect(word, "dog") & labels == "1") { :
  the condition has length > 1 and only the first element will be used
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...