fwrite(, append = TRUE) 附加错误的方式
fwrite(, append = TRUE) appends wrong way
我遇到了 R 中 DataTable 包中的 fwrite 函数的问题。事实上,它以错误的方式附加,我最终得到的结果如下:
**user ref version status Type DataExtraction**
user1 2.02E+11 1 Pending 1 No
user2 2.02E+11 1 Saved 2 No"user3" 2.01806E+11 1 Saved NB No
我使用的功能如下:
library(data.table)
fwrite(Save, "~/Downloads/Register.csv", append = TRUE, sep = ",", quote = TRUE)
可重现的例子:
fwrite(data.table(user="user3",
ref="204094093",
version="2",
status="Pending",
Type="1",DataExtraction="No"),
"~/Downloads/test.csv", sep = ",", append = FALSE)
fwrite(data.table(user="user3",
ref="204094093",
version="2",
status="Pending",
Type="1",DataExtraction="No"),
"~/Downloads/test.csv", sep = ",", append = TRUE)
我不确定它是否隔离了问题,但似乎如果我手动更改 .csv 文件中的某些内容(例如将 DataExtraction 重命名为 Extraction),就会出现以错误方式附加的问题。
有人知道出了什么问题吗?
谢谢!
当我 运行 您的示例代码时,我的行为没有任何问题 - 文件按需要输出。根据您关于手动更改文件内容的评论,以及不需要的输出是什么样子,我认为这是正在发生的事情。当 fwrite()
(以及许多其他类似的 IO 函数)写入文件时,每一行的末尾都有一个换行符(在 R 中,这通常表示为 \n
)。这是需要的,以便后续数据行确实出现在文件的后续行上。通常这也意味着当您在文本编辑器中打开文件时,最后会有一个空行,因为这反映了最后一行写入的换行符。 (尽管不同的编辑器处理方式不同)。所以,我怀疑正在发生的事情是,当您进入并在编辑器中手动编辑文件时,您会以某种方式丢失最后一个换行符。这意味着当你使用追加再次写入时,文件末尾没有换行符,因此你会在文件的一行上得到两行数据的不良行为。
因此,解决方案是找到如何防止手动编辑删除最后一个换行符的方法。除此之外,还有一些方法可以使用 R.E.g. 将单个换行符写入文件。使用 cat()
函数。
我遇到了 R 中 DataTable 包中的 fwrite 函数的问题。事实上,它以错误的方式附加,我最终得到的结果如下:
**user ref version status Type DataExtraction**
user1 2.02E+11 1 Pending 1 No
user2 2.02E+11 1 Saved 2 No"user3" 2.01806E+11 1 Saved NB No
我使用的功能如下:
library(data.table)
fwrite(Save, "~/Downloads/Register.csv", append = TRUE, sep = ",", quote = TRUE)
可重现的例子:
fwrite(data.table(user="user3",
ref="204094093",
version="2",
status="Pending",
Type="1",DataExtraction="No"),
"~/Downloads/test.csv", sep = ",", append = FALSE)
fwrite(data.table(user="user3",
ref="204094093",
version="2",
status="Pending",
Type="1",DataExtraction="No"),
"~/Downloads/test.csv", sep = ",", append = TRUE)
我不确定它是否隔离了问题,但似乎如果我手动更改 .csv 文件中的某些内容(例如将 DataExtraction 重命名为 Extraction),就会出现以错误方式附加的问题。 有人知道出了什么问题吗?
谢谢!
当我 运行 您的示例代码时,我的行为没有任何问题 - 文件按需要输出。根据您关于手动更改文件内容的评论,以及不需要的输出是什么样子,我认为这是正在发生的事情。当 fwrite()
(以及许多其他类似的 IO 函数)写入文件时,每一行的末尾都有一个换行符(在 R 中,这通常表示为 \n
)。这是需要的,以便后续数据行确实出现在文件的后续行上。通常这也意味着当您在文本编辑器中打开文件时,最后会有一个空行,因为这反映了最后一行写入的换行符。 (尽管不同的编辑器处理方式不同)。所以,我怀疑正在发生的事情是,当您进入并在编辑器中手动编辑文件时,您会以某种方式丢失最后一个换行符。这意味着当你使用追加再次写入时,文件末尾没有换行符,因此你会在文件的一行上得到两行数据的不良行为。
因此,解决方案是找到如何防止手动编辑删除最后一个换行符的方法。除此之外,还有一些方法可以使用 R.E.g. 将单个换行符写入文件。使用 cat()
函数。