R - заменить переменную с определенными значениями в dplyr - PullRequest
0 голосов
/ 30 апреля 2019

Допустим, я хочу заменить несколько переменных на 1 в наборе данных:

data(iris)

put_1 <- function(x){ x = 1}

iris %>% 
   mutate_at(vars(Petal.Length, Petal.Width), funs(put_1)) %>% 
   head()
#   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1          5.1         3.5            1           1  setosa
# 2          4.9         3.0            1           1  setosa
# 3          4.7         3.2            1           1  setosa
# 4          4.6         3.1            1           1  setosa
# 5          5.0         3.6            1           1  setosa
# 6          5.4         3.9            1           1  setosa

Вопрос: есть ли способ сделать то же самое без объявления функции раньше?

Я пробовал такие вещи, как:

  • mutate_at(vars(...), funs(function(x){ x <- 1 }))

  • mutate_at(vars(...), funs(~ 1 }))

  • mutate_at(vars(...), funs(~ . = 1 }))

без успеха.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Лучший ответ от @ josemz

iris %>% 
   mutate_at(vars(Petal.Length, Petal.Width), ~ 1)
0 голосов
/ 30 апреля 2019

Это один из случаев, когда = и <- не работают одинаково

> iris%>%mutate_at(vars(Petal.Length,Petal.Width),funs(.<-1))%>%head()
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5            1           1  setosa
2          4.9         3.0            1           1  setosa
3          4.7         3.2            1           1  setosa
4          4.6         3.1            1           1  setosa
5          5.0         3.6            1           1  setosa
6          5.4         3.9            1           1  setosa

И

> iris%>%mutate_at(vars(Petal.Length,Petal.Width),funs(.=1))%>%head()
Error: Can't create call to non-callable object
Call `rlang::last_error()` to see a backtrace
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...