dplyr แทนที่ค่าในหลายตัวแปร

ฉันต้องเปลี่ยน non-4 เป็น 80 ในสูบ, เกียร์, คอลัมคาร์บ ฉันลองทำสิ่งต่อไปนี้แล้ว แต่มันไม่ทำงาน

mtcars %>% mutate_at(vars(cyl, gear, carb), replace(which(.!=4), 80))

มันแสดงข้อผิดพลาดต่อไปนี้:

Error in replace(which(. != 4), 80) : 
  argument "values" is missing, with no default

ฉันพลาดอะไรไปที่นี่?


person Geet    schedule 30.05.2018    source แหล่งที่มา


คำตอบ (1)


คุณต้องส่งฟังก์ชันหรือสูตรไปที่ mutate_at เป็นอาร์กิวเมนต์ที่สอง:

mtcars %>% mutate_at(vars(cyl, gear, carb), ~ replace(., which(.!=4), 80))

หรือสร้างฟังก์ชันโดยใช้ funs:

mtcars %>% mutate_at(vars(cyl, gear, carb), funs(replace(., which(.!=4), 80)))
person Psidom    schedule 30.05.2018
comment
เข้าใจแล้ว. มหัศจรรย์! ขอบคุณ! - person Geet; 31.05.2018