2016-07-19 5 views
2

Синтаксис dplyr %>% не работает с функцией save(). Когда я запускаю этот код ниже, только x, а не y, восстанавливается как переменная в рабочей области. Зачем? Является ли это ошибкой или я недостаточно понимаю функциональность трубы?Оператор dplyr pipe with save()

require(dplyr) 

x <- 2 
save(x, file = 'x.rdat') 

y <- 3 
y %>% save(file = 'y.rdat') 

rm(x) 
rm(y) 

load('x.rdat') 
load('y.rdat') 

ls() 

ответ

5

save() принимает имя объекта (или объектов), или символ, а не сам объект (а полученный файл может хранить несколько объектов). Интерпретация символов, скорее всего, запуталась в конвейере dplyr. Может быть, saveRDS()/readRDS() будет делать то, что вы хотите ...?

require(dplyr) 
y <- 3 
y %>% saveRDS(file = 'y.rds') 
rm(y) 
readRDS('y.rds') -> y 
ls() 

(Если я пытаюсь deparse(substitute(x)) на функции, вызываемой из трубы, переменной, которая передается называется "." - это не будет работать очень хорошо ...)