所以我的数据框看起来像这样
> df
file_name some_value
test.csv 12815415,5712365,12815383,13700109,12806007
write.csv(df,file="E:/output.csv",row.names = F)
生成的csv表如下所示
file_name some_value
test.csv 1.281545E+38
似乎只有some_value
中的第一个条目被写入了csv,但是E + 38是从哪里来的呢?有什么建议可以解决此问题,以便在some_value
列下有5个条目?
> dput(df)
structure(list(file_name = structure(1L, .Label = "test.csv", class =
"factor"),
some_value = structure(1L, .Label =
"12815415,5712365,12815383,13700109,12806007", class = "factor")), .Names =
c("file_name",
"some_value"), row.names = c(NA, -1L), class = "data.frame")
答案 0 :(得分:2)
要解决此问题,您可以使用单引号将该字段开头。
df$some_value <- paste0("'",df$some_value) #Add a single quote to the beginning to indicate to Excel that it is a text field
请注意,E + 38实际上是Excel问题,而不是R问题。似乎出现了E + 38,因为逗号分隔的值在csv文件的单个字段中输入。如果您在Excel中打开此代码,则Excel会将其视为逗号格式化的单个数字(例如,将几千个分隔成几百个),因此科学计数法中的数字为38个零。如果您在文本编辑器中打开csv文件,我认为它不会像这样。
如果我在Excel中查看相同的文件,则会看到:
Excel已将some_value解释为单个数字,并将逗号解释为格式,并以科学计数法显示该数字。
Excel可以通过在数字前加一个单引号来强制将值视为文本。
答案 1 :(得分:0)
只需使用至少一个字符作为some_values的第一个元素 例如s12815415,5712365,12815383,13700109,12806007。然后导出时将some_values视为文本并提取整个字符串
答案 2 :(得分:0)
由于MS excel的默认视觉属性(在Windows中),您正在获得这种价值。在记事本中打开.CSV文件(右键单击并用记事本打开),以获取准确的输出。