почему ошибка: сбой arrange () на неявном шаге mutate ()

#r

#r

Вопрос:

Был выполнен следующий код:

 tb   <- tibble(
               year   <- rep(2001:2020,10)
)

tb %<>% arrange(year) %>%
    mutate(
        id   <-  rep(1:10,20),
        r1   <- rnorm(200,0,1),
        r2   <- rnorm(200,1,1),
        r3   <-  rnorm(200,2,1)
  )
  

Затем появилось сообщение об ошибке:

Ошибка: сбой arrange() на неявном шаге mutate(). x не удалось создать временный столбец для ..1 . ..1 ℹ есть year .

Кто-нибудь может пролить свет на причину?

Ответ №1:

Попробуйте это. Похоже, проблема с назначением переменных. Попробуйте заменить <- by = и %<>% by %>% . Вот возможное решение:

 #Data
tb   <- tibble(
  year   = rep(2001:2020,10)
)
#Code
tb %>% arrange(year) %>%
  mutate(
    id   =  rep(1:10,20),
    r1   = rnorm(200,0,1),
    r2   = rnorm(200,1,1),
    r3   =  rnorm(200,2,1)
  )
  

Вывод:

 # A tibble: 200 x 5
    year    id     r1     r2     r3
   <int> <int>  <dbl>  <dbl>  <dbl>
 1  2001     1  1.10   1.62   2.92 
 2  2001     2  0.144  1.18   1.08 
 3  2001     3 -0.118  2.32   3.15 
 4  2001     4 -0.912  0.701  1.36 
 5  2001     5 -1.44  -0.648  1.11 
 6  2001     6 -0.797  1.95  -0.333
 7  2001     7  1.25  -0.113  1.85 
 8  2001     8  0.772  1.62   2.32 
 9  2001     9 -0.220  1.51   1.29 
10  2001    10 -0.425  1.37   3.24 
# ... with 190 more rows
  

Комментарии:

1. Спасибо! Я никогда не понимал, что есть какая-то разница между <- и =

2. @tobinz Да, это так, <- используется для присвоения значений глобальной среде. = также может использоваться для этого, но он отлично работает внутри структур в виде фреймов данных, подобных тем, которые вы используете. Таким образом, ошибки, на которые вы можете поспорить, могут быть связаны с тем, что новые переменные были созданы как объекты в глобальной среде, а не были созданы внутри объекта dataframe.