如何在R中编写制表符分隔的文件,文本字段周围不带引号

如何在R中编写制表符分隔的文件,文本字段周围不带引号,r,csv,data.table,R,Csv,Data.table,数据帧示例: df = data.frame(a = c('sdfsd\tdfs"df\tssdf"sd\\'), b = ("test")) 预期输出(制表符显示为): 产生 "a" "b" "sdfsd<tab>dfs\"df<tab>ssdf\"sd\"<tab>"test" 它没有引号,但也没有转义delim字

数据帧示例:

df = data.frame(a = c('sdfsd\tdfs"df\tssdf"sd\\'), b = ("test"))
预期输出(制表符显示为
):

产生

"a" "b"
"sdfsd<tab>dfs\"df<tab>ssdf\"sd\"<tab>"test"
它没有引号,但也没有转义delim字符(制表符)和转义字符(
\
)。因此,结果是不可分析的

我还尝试了从
data.table
package编写
fwrite
。它也有类似的快速引用或不转义

也就是说,我需要真正的分隔符+转义字符格式输出,而不是基于引号。
R?

中的任何库基于Rui Barradas的评论,我将:

   df_clean = as.data.frame(lapply(df, function(x){ gsub("\t"," ",gsub("\\", "", x, fixed = T), fixed = T) }))

  fwrite(
    df_clean,
    file=f_name,
    sep = "\t",
    quote = F,
    eol = "\n",
    na = "\\N",
    qmethod = "escape",
    compress = "gzip"
  )

write.table、data.table::fwrite、readr::write_tsv、vroom_write都不检查转储字段中的delim字符(和转义字符),也不转义,这有点傻。

基于Rui Barradas的评论,我将:

   df_clean = as.data.frame(lapply(df, function(x){ gsub("\t"," ",gsub("\\", "", x, fixed = T), fixed = T) }))

  fwrite(
    df_clean,
    file=f_name,
    sep = "\t",
    quote = F,
    eol = "\n",
    na = "\\N",
    qmethod = "escape",
    compress = "gzip"
  )
write.table、data.table::fwrite、readr::write_tsv、vroom_write都不检查转储字段中的delim字符(和转义字符),也不转义它,这有点傻。

下面是我对这个问题的评论的
*apply
版本。在data.frame
df
的所有列中,嵌入的选项卡
“\t”
被替换为
“\\t”

df[] <- lapply(df, function(x) gsub("\\t", "\\\\t", x))
df[]下面是我对这个问题的评论的
*版本。在data.frame
df
的所有列中,嵌入的选项卡
“\t”
被替换为
“\\t”

df[] <- lapply(df, function(x) gsub("\\t", "\\\\t", x))

df[]Try
df[[1]]如果oyu发布应用版本作为答案,我将接受它Try
df[[1]]如果oyu发布应用版本作为答案,我将接受它
   df_clean = as.data.frame(lapply(df, function(x){ gsub("\t"," ",gsub("\\", "", x, fixed = T), fixed = T) }))

  fwrite(
    df_clean,
    file=f_name,
    sep = "\t",
    quote = F,
    eol = "\n",
    na = "\\N",
    qmethod = "escape",
    compress = "gzip"
  )
df[] <- lapply(df, function(x) gsub("\\t", "\\\\t", x))