将CSV获取为INOUT,并在管道工API R中输出CSV

将CSV获取为INOUT,并在管道工API R中输出CSV,r,plumber,R,Plumber,我想在管道工API中获得CSV的输入,并将其输出为CSV 我可以单独做这两件事(借助下面所附的链接) 但我不能一起做 使用Github链接中的序列化程序: serializer_csv <- function(){ function(val, req, res, errorHandler){ tryCatch({ res$setHeader("Content-Type", "text/plain") res$setHeader("Content-Disp

我想在管道工API中获得CSV的输入,并将其输出为CSV

我可以单独做这两件事(借助下面所附的链接)

但我不能一起做

使用Github链接中的序列化程序:

serializer_csv <- function(){
  function(val, req, res, errorHandler){
    tryCatch({
      res$setHeader("Content-Type", "text/plain")
      res$setHeader("Content-Disposition", 'attachment; filename="xxx.csv"')
      res$body <- paste0(val, collapse="\n")
      return(res$toResponse())
    }, error=function(e){
      errorHandler(req, res, e)
    })
  }
}
plumber::addSerializer("csv", serializer_csv)
plumber::plumber$new("plumber-csv.R")$run(port = 8833)

serializer\u csv这项工作在管道工的4.6.0版中进行,但有点粗糙。您可以将
write.csv
read.csv
替换为
write
fread
来自
data.table
format\u csv
来自
readr

图书馆(水管工)

serializer_csv这项工作在管道工的4.6.0版中进行,但有点粗糙。您可以将
write.csv
read.csv
替换为
write
fread
来自
data.table
format\u csv
来自
readr

图书馆(水管工)

serializer_csv只是为了澄清一下,您希望将一个文件作为csv发送给管道工,而不是希望输出也是csv文件?是的。没错。但是我会在CSV上做一些操作。我想说清楚,你想把一个文件作为CSV发送给水管工,而不是把输出也作为CSV文件?是的。没错。但是我会在CSV上做一些操作。谢谢。我今天会试试这个,让你知道!谢谢我今天会试试这个,让你知道!
#* @serializer csv
#* @get /csv
function() {
  df <- data.frame(CHAR = letters, NUM = rnorm(length(letters)), stringsAsFactors = F)
  csv_file <- tempfile(fileext = ".csv")
  on.exit(unlink(csv_file), add = TRUE)
  write.csv(df, file = csv_file)
  readLines(csv_file)
}