Может ли использование return () после конвейера magrittr написать объект, что-то сломать? - PullRequest
0 голосов
/ 08 марта 2019

Мне часто приходится вручную очищать записи в наборах данных. Для гибкости и удобочитаемости я люблю использовать трубы. Иногда я позже сталкиваюсь с другой вещью, которую мне нужно очистить, поэтому я сохраняю строку для копирования-вставки в моем magrittr конвейере.

В ggplot2 вызов пустого theme() в конце помогает мне сохранять гибкость кодирования для последующих добавлений. Я никогда не сталкивался с такими проблемами и думал, что смогу сделать то же самое с return() в конвейере.

Я думаю, return() не предназначен для использования внешних функций, так что: есть ли такой способ, который может нарушить мой код?

Я также наткнулся на {.} и альтернативу, но я действительно не знаю, что она делает, и поиск информации (даже с использованием расширенного поиска по SO) не помогает.

Пример:

starwars %<>% 
  mutate(hair_color = ifelse(name == "Captain Phasma", "blond", hair_color)) %>%
  mutate(skin_color = ifelse(name == "Captain Phasma", "fair", hair_color)) %>%
  mutate(hair_color = ifelse(name == "Zam Wesell", "blond", hair_color)) %>%
  #mutate(var = ifelse(name == "cond", "replacement", var)) %>% ### for future c/p
  return() #  

Примечание: я понимаю, что это граничит с тегом "стиль кодирования", поэтому я хотел бы отметить, что я не заинтересован в обсуждении на основе мнений, но советую, если это может нарушить мой код в определенных обстоятельствах. Приветствуются примеры, когда он нарушает код, а также альтернативные предложения.

Я думаю, что эти темы / темы связаны:

1 Ответ

0 голосов
/ 29 марта 2019

Как выдвинуто @Roland и @RolandASc: ?identity() делает то, что я хотел. Я использую его с тех пор, и до сих пор не встречал сюрпризов.

Дальнейшее связанное обсуждение найдено на здесь в сообществе RStudio.

...