заменить dplyr положением в R - PullRequest
0 голосов
/ 03 сентября 2018

Значение третьего ряда mtcars$mpg равно 22.8.

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

Я продолжаю и заменяю 22.8 значением 5,555, как показано ниже. Это работает, но не в третьем ряду, как я приказываю своему компьютеру! Вместо этого значение отображается в 22-й строке столбца mtcars$mpg.

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

Как заставить это изменение произойти именно в третьей строке mtcars$mpg? А что пошло не так?

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Мы можем использовать

library(dplyr)
mtcars %>%
     mutate(mpg = case_when(row_number() == 3 ~ 5555, TRUE ~ mpg))
0 голосов
/ 04 сентября 2018

Я думаю, что dplyr, вероятно, излишний, и, возможно, не лучший инструмент для этой проблемы. Это отлично работает:

mtcars[3, "mpg"] <- 5555

Также стоит помнить, что для числового вектора следует использовать одиночный [. [[Для списков, когда вы хотите получить элемент, а не диапазон элементов (т. Е. Вам не нужен другой список).

0 голосов
/ 03 сентября 2018

Код должен быть

mtcars %>% mutate(mpg = replace(mpg, 3, 5555))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...