我有一个关于write.csv或write.table的问题 - 两者都没有达到我想要的效果,但产生了相同的结果:
我需要按照外部给定的格式生成一个.csv文件。要求如下:
字段始终为纯文本。只有当字段包含特殊字符(根据CSV语法)时,才使用以下转义:如果字段值包含逗号和/或双引号字符,则将整个字段用双引号括起来。如果字段原本已经包含双引号,则每个双引号都重复两次,以使其与其他额外的双引号区分开来,例如:
This " is a , special value"
将变成
"This "" is a , special value"""
对于要求我是清楚的,但我在编写确切格式方面遇到了困难。我已经了解了“quote”和“qmethod”选项,以下是我迄今为止所做的:
foo <-
data.table(
'var1' = c('Test', 'Test\"3', "This \" is a , special value\""),
'var2' = c("This \" is a , special value\"", 'Bla\"', 'Test')
)
write.csv(
x = foo,
file = 'test.csv',
quote = T,
row.names = F
)
这将导致以下的.csv文件:
"var1","var2"
"Test","This "" is a , special value"""
"Test""3","Bla"""
"This "" is a , special value""","Test"
这不符合要求,因为每个值都被双引号包围。但请注意,它满足了在值内重复使用双引号的条件。
现在,如果我设置quote = F
,我会得到:
var1,var2
Test,This " is a , special value"
Test"3,Bla"
This " is a , special value",Test
现在它不满足这两个条件。
我尝试了类似的方法使用write.table,但是遇到了同样的问题。我试着在谷歌上搜索,但是没有真正找到答案,因为对我来说,这似乎是一个特殊的问题。
有人能帮忙吗?非常感谢提前!:)