То, что здесь происходит, это то, что ваши команды на самом деле factors
(которые под капотом всего лишь integer
векторов) вместо characters
. Если столбцы characters
, то, по сути, все ваши решения работают как положено. Причина, по которой выходные данные различны, заключается в том, что dplyr
пытается быть умным в отношении факторов и делает их удобочитаемыми, когда это возможно.
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
wk1 <- read.table(text = 'season week home_team away_team home_score away_score tm_won tm_won1 tm_won2
2019 1 CHI GB 3 10 GB 7 7
2019 1 CAR LA 27 30 LA 11 11
2019 1 PHI WAS 32 27 <NA> 14 14
2019 1 NYJ BUF 16 17 BUF 3 3
2019 1 MIN ATL 28 12 <NA> 9 9', header = T, stringsAsFactors = FALSE)
if_else(wk1$home_score < wk1$away_score, wk1$away_team, wk1$home_team)
#> [1] "GB" "LA" "PHI" "BUF" "MIN"
ifelse(wk1$home_score < wk1$away_score, wk1$away_team, wk1$home_team)
#> [1] "GB" "LA" "PHI" "BUF" "MIN"
wk1 <- read.table(text = 'season week home_team away_team home_score away_score tm_won tm_won1 tm_won2
2019 1 CHI GB 3 10 GB 7 7
2019 1 CAR LA 27 30 LA 11 11
2019 1 PHI WAS 32 27 <NA> 14 14
2019 1 NYJ BUF 16 17 BUF 3 3
2019 1 MIN ATL 28 12 <NA> 9 9', header = T)
if_else(wk1$home_score < wk1$away_score, wk1$away_team, wk1$home_team)
#> Warning in `[<-.factor`(`*tmp*`, i, value = structure(c(5L, 3L), .Label =
#> c("CAR", : invalid factor level, NA generated
#> [1] GB LA <NA> BUF <NA>
#> Levels: ATL BUF GB LA WAS
ifelse(wk1$home_score < wk1$away_score, wk1$away_team, wk1$home_team)
#> [1] 3 4 5 2 3
Создано в 2019-10-09 представьте пакет (v0.3.0)