r-使从stdin读取RDS独立于文件是否通过管道创建
发布时间:2022-03-07 21:34:13 217
相关标签:
readRDS=function(file = pipe('cat', 'rb'), ...) {
base::readRDS(file, ...)
}
saveRDS=function(object, file = pipe('cat', 'wb'), ...) {
base::saveRDS(object, file, ...)
}
我使用上述函数从stdin读取RDS文件,并将RDS文件写入stdout。
如下所示,一个readRDS调用有效,另一个无效。这取决于rds文件是否使用管道编写。
$ lr -e 'source("saveRDS.R"); saveRDS(1:3, file="/tmp/readRDS.rds");'
$ lr -e 'source("readRDS.R"); print(readRDS());' < /tmp/readRDS.rds
Error in base::readRDS(file, ...) : unknown input format
$ lr -e 'source("saveRDS.R"); saveRDS(1:3);' > /tmp/readRDS.rds
$ lr -e 'source("readRDS.R"); print(readRDS());' < /tmp/readRDS.rds
[1] 1 2 3
为什么这取决于文件的编写方式?有没有办法让stdin中的readRDS始终工作,无论文件是否通过管道写入?
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报