Несколько каналов в одной строке не будут компилироваться

У меня проблемы с пониманием того, что идет не так в R-сценарии ниже. Определение уровней переменных перед вызовом fct_expand приводит к успешной компиляции, но когда я вставляю определение прямо в fct_expand, R выдает ошибку

"Ошибка в mutate_impl(.data, dots): попытка применить не-функцию"

R-скрипт, воспроизводящий ошибку (Microsoft R open 3.4.0.0 и R 3.3.3):

library(dplyr)
library(forcats)
library(magrittr)

f <- factor(1:3)%>% tbl_df
f_lev <- factor(1:6) %>% tbl_df

#This compiles just fine
levels <- f_lev %$% value %>% levels
f %>% mutate(value = fct_expand(value, levels)) %$% value %>% levels

#This wont compile
f %>% mutate(value = fct_expand(value, f_lev %$% value %>% levels)) %$% value %>% levels

РЕДАКТИРОВАТЬ: код не будет работать на 3 из 4 машин, которые пытались запустить R 3.3.3 (на компьютере без ошибок никогда не было установлено RTVS или Microsoft R.). Так что это должно зависеть от некоторых настроек, я думаю. Следующий пример иллюстрирует ту же проблему; на машинах, которые выдают ошибку в приведенном выше коде:

library(dplyr)
library(forcats)
library(magrittr)

f <- factor(1:3) %>% tbl_df
f_lev <- factor(1:6) %>% tbl_df

f %>% {
   tmp <- f_lev %$% value %>% levels
   mutate(., value = fct_expand(value, tmp))
       } %>% str

f %>% {
mutate(., value = fct_expand(value, f_lev %$% value %>% levels))
      } %>% str

дает два разных результата:

Classes 'tbl_df', 'tbl' and 'data.frame':   3 obs. of  1 variable:
$ value: Factor w/ 6 levels "1","2","3","4",..: 1 2 3
Classes 'tbl_df', 'tbl' and 'data.frame':   3 obs. of  1 variable:
$ value: Factor w/ 3 levels "1","2","3": 1 2 3

В то время как на компьютере, который не выдает ошибку компиляции, последний код приводит к:

Classes 'tbl_df', 'tbl' and 'data.frame':   3 obs. of  1 variable:
$ value: Factor w/ 6 levels "1","2","3","4",..: 1 2 3
Classes 'tbl_df', 'tbl' and 'data.frame':   3 obs. of  1 variable:
$ value: Factor w/ 6 levels "1","2","3","4",..: 1 2 3

0 ответов

Другие вопросы по тегам