[英]dplyr replace by position in R
mtcars$mpg
第三行的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
的第三行? 怎么了?
该代码应为
mtcars %>% mutate(mpg = replace(mpg, 3, 5555))
我认为dplyr可能是过大了,可能不是解决此问题的最佳工具。 这很好用:
mtcars[3, "mpg"] <- 5555
另外要记住,对于数值向量,应使用单[。 [[是用于列表,当您要获取一个元素而不是一系列元素时(即,您不想要另一个列表)。
我们可以用
library(dplyr)
mtcars %>%
mutate(mpg = case_when(row_number() == 3 ~ 5555, TRUE ~ mpg))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.