写入CSV文件时,包含'E'的字符字段将自动转换为科学计数法(例如,板孔ID“ 1E6”变为1,000,000)-与在Excel或LibreOffice中查看数据无关。
纯文本文件仍为“ 1E6”。但是,即使我编写了csv文件,也从未在Excel或LibreOffice中打开它,它仍会通过read.csv作为科学符号导入回R中。
玩具数据示例:
df <- data.frame(a = c("1E3", "2E4", "3E5", "4E6"))
df
write.csv(df, "~/Downloads/test.csv")
df2 <- read.csv("~/Downloads/test.csv")
df2
# Trialled before write.csv, but did not change
df$a <- as.character(df$a)
format(df$a, scientific = FALSE)
options(scipen = 999)
这是一个很小的玩具数据集,因此我可以在电子表格中将“ 1,000,000”手动更改回“ 1E6”,但是实际数据包含> 1,000行,并且此时需要编写一个中间表。此外,一旦Excel或LibreOffice以科学方式(“ 1,000,000”)对其进行“读取”,就不会反向转换为字符串了!
df$a
是字符as.character
不会改变options(scipen = 999)
df$a <- format(df$a, scientific = FALSE)
更改R version 3.5.2 (2018-12-20)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Mojave 10.14.4
locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_3.5.2 tools_3.5.2 yaml_2.2.0
与Stop Excel Scientific Notation Conversion类似的问题,但并未在那里解决,我不认为它像“责备Excel”那样简单-LibreOffice中的同一问题,Excel从未打开的文件仍然存在问题。