是否可以在管道%>%
链中使用saveRDS?
c(1,2,3) %>%
saveRDS(file="123.rda") %>%
mean()
当前这会导致错误,因为saveRDS返回null。
我希望saveRDS()返回c(1,2,3)!
答案 0 :(得分:3)
也许编写自己的函数,其功能符合您的期望
save_and_return_RDS <- function(x) {
saveRDS(x, file="123.rda")
return(x)
}
然后使用它
c(1, 2, 3) %>% save_and_return_RDS()
#[1] 1 2 3
答案 1 :(得分:3)
我们可以使用tee
中的%T>
(magrittr
)运算符
library(magrittr)
1:3 %T>%
saveRDS(file="123.rda") %>%
mean
#[1] 2
如果我们想返回相同的对象,请使用I
1:3 %T>%
saveRDS(file="123.rda") %>%
I
#[1] 1 2 3
根据?"%T>%"
将值向前放置到函数或调用表达式中,然后返回原始值而不是结果。当将表达式用于其副作用(例如绘图或打印)时,这很有用。
答案 2 :(得分:2)
在save_RDS
包中使用tsfe
!它返回一个可以在管道中使用的不可见对象。
c(1,2,3) %>%
tfse::save_RDS("x.rda") %>%
mean()
# returns 2