Борьба с за-петли и мутировать в R - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь обернуть голову вокруг R, и я уверен, что делаю что-то глупое.

У меня есть датафрейм, который включает в себя 30 брендов (имена которых у меня есть отдельно в списке под названием "брэнды ») и список новых имен, которые я хочу вставить в фрейм данных (называемые« известные брэнды »).

Я пытаюсь заполнить результаты оператора if в новых столбцах в R-кадре данных (используя имена в пределах «известных брендов»), но это продолжает генерировать сообщение об ошибке (неожиданное «{» в »{")

Я не уверен, где я иду не так - вот мой код:

for(i in 1:length(brands)){
  plot1a_df <- plot1a_df %>% mutate(known_brands[i] = ifelse(brands[i] >1, 1, 0))
}

Для иллюстрации с данными (предположим, 3 столбца x2):

plot1a_df = data.frame (бренды = c (1,0,2), разное = c (0,0,0))

Идея состоит в том, чтобы закончить третий столбец ("known_brands") сс (0,0,1)

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018
for (i in 1:30){
  plot1a_df[, known_cols[i]] <- ifelse(plot1a_df[,brands[i]] >1, 1, 0)
  print(plot1a_df[, known_cols[i]])
}

Нашел, что моё решение может быть достигнуто без мутирования - хотя, все еще задаюсь вопросом, возможно ли объединить циклы в dplyr (понимаете, здесь много комментариев, но ничего на высоком уровне (для этого простогопойми хоть!)

0 голосов
/ 18 декабря 2018

Чтобы добавить логический столбец с dplyr:

library(dplyr)
plot1a_df %>% mutate(is_brand_known = brands %in% brand_list)

Другой пример с iris набор данных.

species_list = c('setosa')
iris %>% mutate(is_setosa = Species %in% species_list)
...