dplyr由R中的位置替换

时间:2018-09-02 23:10:01

标签: r dplyr

mtcars$mpg第三行的值为22.8

library(tidyverse)
mtcars$mpg[[3]]

我继续将22.8替换为值5,555,如下所示。它可以工作,但是在我命令计算机执行时却不在第三行!相反,该值显示在mtcars$mpg列的第22行。

mtreplace <- mtcars %>% mutate(mpg = replace(mpg, mpg[[3]], 5555))
mtreplace
mtreplace$mpg[[3]]
mtreplace$mpg[[22]]

如何使此更改恰好发生在mtcars$mpg的第三行?怎么了?

3 个答案:

答案 0 :(得分:4)

代码应为

mtcars %>% mutate(mpg = replace(mpg, 3, 5555))

答案 1 :(得分:2)

我认为dplyr可能是过大的了,可能不是解决此问题的最佳工具。效果很好:

mtcars[3, "mpg"] <- 5555

另外要记住,对于数字矢量,应使用单[。 [[是用于列表的列表,当您要获取一个元素而不是一系列元素时(即,您不想要另一个列表)。

答案 2 :(得分:0)

我们可以使用

library(dplyr)
mtcars %>%
     mutate(mpg = case_when(row_number() == 3 ~ 5555, TRUE ~ mpg))