如何在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.framedf
的所有列中,嵌入的选项卡“\t”
被替换为“\\t”
df[] <- lapply(df, function(x) gsub("\\t", "\\\\t", x))
df[]下面是我对这个问题的评论的*版本。在data.framedf
的所有列中,嵌入的选项卡“\t”
被替换为“\\t”
df[] <- lapply(df, function(x) gsub("\\t", "\\\\t", x))
df[]Trydf[[1]]如果oyu发布应用版本作为答案,我将接受它Trydf[[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))