带有save()的dplyr管道运算符

时间:2016-07-19 01:47:43

标签: r dplyr

dplyr管道%>%语法似乎不适用于save()函数。当我在下面运行此代码时,只有x而不是y被恢复为工作区中的变量。为什么?这是一个错误还是我不能充分理解管道功能?

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()

1 个答案:

答案 0 :(得分:5)

save()获取对象(或多个对象)的名称或符号,而不是对象本身(并且生成的文件可以存储多个对象)。符号解释很可能在dplyr管道中搞砸了。也许saveRDS() / readRDS()会做你想做的......?

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

(如果我尝试deparse(substitute(x))关于从管道中调用的函数,那么传递的变量称为"." - 它不会起作用好吧......)