問題:我寫了超過100 ifelse
陳述一個巨大的一段代碼,不僅要學習,有上ifelse
報表數量限制:超過50引發錯誤。無論如何,我知道有一種更有效的方式來做我想做的事情。與ifelse語句超限
目標:試圖編寫一個函數,將許多字符串變體(參見下面的例子)重新編碼爲清晰的類別(例如下面)。我使用str_detect
給T/F,然後根據響應更改爲正確的類別。我怎麼能沒有超過100 ifelse
陳述(我有更多的類別)。
例子:
mydf <- data_frame(answer = sample(1:5, 10, replace = T),
location = c("at home", "home", "in a home",
"school", "my school", "School", "Work", "work",
"working", "work usually"))
loc_function <- function(x) {
home <- "home"
school <- "school"
work <- "work"
ifelse(str_detect(x, regex(home, ignore_case = T)), "At Home",
ifelse(str_detect(x, regex(school, ignore_case = T)), "At
School",
ifelse(str_detect(x, regex(work, ignore_case = T)), "At
Work", x)))
}
### Using function to clean up messy strings (and recode first column too) into clean categories
mycleandf <- mydf %>%
as_data_frame() %>%
mutate(answer = ifelse(answer >= 2, 1, 0)) %>%
mutate(location = loc_function(location)) %>%
select(answer, location)
mycleandf
# A tibble: 10 x 2
answer location
<dbl> <chr>
1 1 At Home
2 1 At Home
3 1 At Home
4 1 At School
5 1 At School
6 1 At School
7 1 At Work
8 0 At Work
9 1 At Work
10 0 At Work
https://www.tutorialspoint.com/r/r_switch_statement.htm – Kai
*超過100 ifelse語句*當你發現自己需要比的東西屈指可數,你應該開始思考關於尋找更好的方法。當你達到兩把時,你應該開始考慮你做錯了什麼。如果你認爲你有一輛獨輪車,**知道你已經完全搞砸了,需要尋求幫助。你已經達到了翻車水平。 –
聽起來像你想要使用case_when語句,或者使用purr:map()將函數映射到所有單詞以使其成爲標題大小寫? – petergensler