Когда mutate использует элементы строки переменной по отношению ко всему вектору столбца? - PullRequest
0 голосов
/ 23 февраля 2019

Я пытался понять, когда необходимо использовать функции apply или map и использовать формулы внутри них, но без особого успеха, потому что я не вижу логики того, что вызывается или нет.Вот простой пример использования mutate:

library(tidyverse)
df <- tibble(
  a = 1:5,
  b = 3:7,
  c = 5:9
)

df %>% 
  mutate(new = a)

Каждый элемент new является соответствующим элементом.

df %>% 
  mutate(new = 1 == a)

Каждый элемент new равен TRUE of FALSE в зависимости от соответствующего элементаa.

df %>% 
  mutate(new = 3 %in% a)

Каждый элемент new такой же, как он проверяет, есть ли 3 во всем векторе a, а не только в соответствующем элементе.

Так, когда он использует элемент изпеременная с соответствующей строкой, и когда она использует весь вектор переменной?Я не вижу логического шаблона, который бы помог мне определить, нужно ли мне использовать apply или map.

df %>% 
  mutate(new = str_c(a, b, sep = "..."))

Я подумал, что, возможно, это как-то связано с функциями, но здесь он использует соответствующие элементыa и b, а не целые векторы.

На аналогичной ноте, если у меня есть вектор списка в моей таблице:

df2 <- tibble(
  prb = c(0.2, 0.5, 0.3),
  dist = list(rnorm(5, sd = 1), 
           rnorm(5, sd = 5),
           rnorm(5, sd = 10))
)

df2 %>% 
  mutate(new = prb * dist)

Это дает ошибку, даже если 0.2 * rnorm (5, sd = 1) нет.

df2 %>% 
  mutate(one = map2(prb, dist, ~.x * .y))

Так что я должен использовать что-то вроде этого.Почему?

df2 %>% 
  mutate(new = dist)

Это дублирует столбец dist, поэтому он должен смотреть на каждый элемент dist?

df2 %>% 
  mutate(new = dist[1])

Но это не работает так, как мне хотелось бы, потому чтоон возвращает первый элемент всего списка dist (который представляет собой вектор из 5 значений).Я хочу, чтобы первый элемент вектора соответствовал каждой строке, поэтому он возвращает одно число.Да, я знаю, что могу сделать это с помощью функции карты и формулы, но какова логика, почему она работает или нет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...