为啥 write.csv 将 R 中的 4 列转换为 1 列闪亮?
Posted
技术标签:
【中文标题】为啥 write.csv 将 R 中的 4 列转换为 1 列闪亮?【英文标题】:Why does write.csv transform 4 columns to 1 column in R shiny?为什么 write.csv 将 R 中的 4 列转换为 1 列闪亮? 【发布时间】:2022-01-15 04:12:54 【问题描述】:我目前正在使用一个项目,我需要在其中将数据框导入导出为 .csv 文件。代码如下:
ui.R
fileInput(
"file1",
"Importer depuis un fichier",
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv")
),
rHandsontableOutput("tabl")
downloadButton(
"imprCsv",
"Imprimer en CSV"
)
server.R
reactDataBase <- reactiveValues(data = dataBase)
output$tabl <- renderRHandsontable(
rhandsontable(reactDataBase$data, useTypes = TRUE, stretchH = "all") %>%
hot_col("Pièce", readOnly = TRUE) %>%
hot_col("Désignation", readOnly = TRUE)
)
observe(
inFile <- input$file1
if(is.null(inFile)) return(NULL)
reactDataBase$data<<-read.table(file=inFile$datapath, header=TRUE, sep=";", na.string="")
)
output$imprCsv <- downloadHandler(
filename = function() paste0("Rapport ", str_replace_all(Sys.time(), ":", "_"), ".csv"),
content = function(file)
print(reactDataBase$data)
write.csv(reactDataBase$data, file)
)
问题,这里的 csv 文件不是类型
Piece Name Value Minim
1 P2 Picj 12 TRUE
2 P5 Picj 23 TRUE
3 P6 Picj 11 TRUE
4 C15 Calg 9 TRUE
5 X34 Xanol 878 TRUE
但看起来更像:
,"Piece","Name","Value","Minim"
1,"P2","Picj","12","TRUE"
2,"P5","Picj","23","TRUE"
3,"P6","Picj","11","TRUE"
4,"C15","Calg","9","TRUE"
5,"X34","Xanol","878","TRUE"
有什么办法吗?
【问题讨论】:
Value
的左对齐让我觉得它的类型是数字而不是字符。 Minim
可能也是如此。 write.csv
的 quote
参数的默认值为 TRUE
。因此,行为很可能符合预期。要检查,我们需要查看reactDatabase$data
中列的类型。你还没有给我们。
首先感谢您的帮助@Limey。 reactDataBase$data
中的类型并不重要,因为我在这个例子中放了一些随机值。问题是它将一行中的每个信息重新组合成一个字符串以放入一列中。我的reactDataBase$data
是一个完美的数据框,就像我向您展示的第一个选项卡一样,所以我认为问题来自write.csv
。告诉我你是否理解我想要告诉你的内容。
【参考方案1】:
好的,我找到了解决方案。
我只是使用write.csv2
而不是write.csv
?
【讨论】:
以上是关于为啥 write.csv 将 R 中的 4 列转换为 1 列闪亮?的主要内容,如果未能解决你的问题,请参考以下文章