write_csv科学记数法取决于尾随“000”?

时间:2018-05-16 10:27:08

标签: r csv format tidyverse readr

使用package readr中的write_csv()函数编写csv似乎会根据尾随零区别对待数字。

  • 4001705344按原样保存,但
  • 4100738000在csv中保存为4100738e3。

当我重新打开csv时(例如在Excel中),这会导致问题。

对于可重复的例子s。

    library(readr)
    x <- c(4100750938, 4104806156, 4001682199, 4100738000)
    df <- data.frame(x) 
    write_csv(df, "df.csv") 

结果是

    x
    4100750938
    4104806156
    4001682199
    4100738e3

预期结果是

    x
    4100750938
    4104806156
    4001682199
    4100738000

唯一有用的是将x保存为字符向量,这样可以保持000完整并产生预期的输出。

    library(readr)
    x <- c(4100750938, 4104806156, 4001682199, 4100738000)
    x <- as.character(x)
    df <- data.frame(x) 
    write_csv(df, "df.csv") 

但还有另外一种方法吗? write_csv()在这里表现正确吗?

我使用readr_1.1.1 R版本3.3.3(2017-03-06) 平台:x86_64-w64-mingw32 / x64(64位)

浏览我发现的其他问题write_csv read_csv with scientific notation after 1000th row,但这对我来说似乎是一个不同的问题。

2 个答案:

答案 0 :(得分:0)

尝试以下代码

write_csv(df, "df.csv",fileEncoding = "UTF-16LE")

答案 1 :(得分:0)

一种方法是使用常规的write.csv()函数并设置options():

x <- c(4100750938, 4104806156, 4001682199, 4100738000)
df <- data.frame(x) 

options(digits=15) 
write.csv(df, "myfile.csv", row.names = FALSE)

system("cat myfile.csv")
# "x"
# 4100750938
# 4104806156
# 4001682199
# 4100738000