R 如果条件为',则在mutate()中使用if_else()时要保留原始值;t遇见

R 如果条件为',则在mutate()中使用if_else()时要保留原始值;t遇见,r,if-statement,dplyr,mutate,R,If Statement,Dplyr,Mutate,我有下面一行代码,我试图更改数据帧中不同位置(QB、RB、WR、TE)的fpts值,但保持其他两个位置(DST、K)的fpts值不变。如果我运行它,QB、RB、WR、TE位置值会因FPT而改变,但DST和K FPT会变为0。知道为什么会这样吗?fpts列中已经有所有位置的值,但我只想更改我提到的这四个位置的fpts值 library(tidyverse) library(dplyr) projections <-read_csv("https://raw.githubuserconten

我有下面一行代码,我试图更改数据帧中不同位置(QB、RB、WR、TE)的fpts值,但保持其他两个位置(DST、K)的fpts值不变。如果我运行它,QB、RB、WR、TE位置值会因FPT而改变,但DST和K FPT会变为0。知道为什么会这样吗?fpts列中已经有所有位置的值,但我只想更改我提到的这四个位置的fpts值

library(tidyverse)
library(dplyr)

projections <-read_csv("https://raw.githubusercontent.com/samhoppen/2020_FF_Analysis/master/Functions/Projections.csv")

projections <- projections %>% 
     mutate(fpts = (if(position == "QB" || position == "RB" || position == "WR" || position == "TE"){
                             (pass_yds * 0.1) +
                                 (pass_tds * 4) +
                                 (pass_ints * -2) +
                                 (rush_yds * 0.1) +
                                 (rush_tds * 6) + 
                                 (fl * -2) +
                                 (rec_rec * 1) +
                                 (rec_yds * 0.1) +
                                 (rec_tds * 6)}
              else{fpts}))
库(tidyverse)
图书馆(dplyr)

投影当/ifelse
而不是
if/else
时,我们可以使用
case\u,因为
if/else
没有矢量化,即它需要单个元素而不是整个列

library(dplyr)
projections %>%
    mutate(fpts = case_when(position %in% c('QB', 'RB', 'WR', 'TE')~ 
     (pass_yds * 0.1) +
                             (pass_tds * 4) +
                             (pass_ints * -2) +
                             (rush_yds * 0.1) +
                             (rush_tds * 6) + 
                             (fl * -2) +
                             (rec_rec * 1) +
                             (rec_yds * 0.1) +
                             (rec_tds * 6), TRUE ~ fpts))
# A tibble: 790 x 16
#   player team  position pass_att pass_cmp pass_yds pass_tds pass_ints rush_att rush_yds rush_tds    fl  fpts
#   <chr>  <chr> <chr>       <dbl>    <dbl>    <dbl>    <dbl>     <dbl>    <dbl>    <dbl>    <dbl> <dbl> <dbl>
# 1 Lamar… BAL   QB           465.     297.    3465.     29.8      11.9    156.     968.       5.5   4.1  564.
# 2 Patri… KC    QB           558.     361     4453.     33.3       9.8     72.3    353.       3.7   3.5  609.
# 3 Dak P… DAL   QB           558.     363     4463.     28.6      12.4     53.4    269.       3.8   3.3  579.
# 4 Desha… HOU   QB           515.     339.    3997.     25.3      14.8     94.8    509.       5.1   3.7  545.
# 5 Russe… SEA   QB           478.     312     3842.     29.2       8.5     77.7    414.       2.5   2.9  535.
# 6 Kyler… ARI   QB           542.     349.    3733.     24.9      15.1     94.9    525        3.7   2.7  512.
# 7 Josh … BUF   QB           510.     299.    3479.     20.1      13.8    106.     612.       7.2   5.2  495.
# 8 Tom B… TB    QB           559      347.    4447.     29.3      11.8     25.7     32.3      1.8   2.6  547.
# 9 Matt … ATL   QB           621.     407.    4604.     27.6      14.9     33      128.       1     4.6  551.
#10 Drew … NO    QB           517.     365.    3889      30.5       9.5     19.7     21.7      1.7   1.8  501.
# … with 780 more rows, and 3 more variables: rec_rec <dbl>, rec_yds <dbl>, rec_tds <dbl>
库(dplyr)
预测%>%
变异(fpts=情况_,当(位置%c('QB','RB','WR','TE')~
(通过码*0.1)+
(通过tds*4)+
(及格分数*-2)+
(拉什伊兹*0.1)+
(拉什_tds*6)+
(fl*-2)+
(记录*1)+
(建议码*0.1)+
(记录tds*6),真值~fpts)
#A tibble:790 x 16
#球员团队位置传球(接球传球)(接球传球)(接球传球)(接球传球)(接球传球)(接球传球)(接球传球)(接球传球
#                                            
#1拉马尔…巴尔QB 465。297346529.8      11.9    156.     9685.5   4.1  564.
#2帕特里…KC QB 558。361     4453.     33.3       9.8     72.3    353.       3.7   3.5  609.
#3天…我的QB558。363     4463.     28.6      12.4     53.4    269.       3.8   3.3  579.
#4德沙…侯QB515。339399725.3      14.8     94.8    509.       5.1   3.7  545.
#5罗素…海QB 478。312     3842.     29.2       8.5     77.7    414.       2.5   2.9  535.
#6凯勒…阿里QB 542。349373324.9      15.1     94.9    525        3.7   2.7  512.
#7乔希…BUF QB 510。299347920.1      13.8    106.     6127.2   5.2  495.
#8汤姆B…TB QB 559 347。444729.3      11.8     25.7     32.3      1.8   2.6  547.
#9马特…ATL QB 621。407460427.6      14.9     33      128.       1     4.6  551.
#10号……编号QB517。3653889      30.5       9.5     19.7     21.7      1.7   1.8  501.
#…增加780行,增加3个变量:rec_rec、rec_yds、rec_tds
mutate(fpts=if_-else(一些和(长的)条件),新的_值,fpts))
如果条件不成立,则保留其原始值。顺便说一句,
if_-else(位置%c(“QB”、“RB”、“WR”、“TE”),(大量数学),fpts)