我在尝试将 CSV 文件上传到我的 Shiny 应用程序时遇到问题。
将我的 Excel 数据保存为 CSV 文件并将其上传到 Shiny 应用程序后。我尝试检查 https://shiny.posit.co/r/gallery/widgets/file-upload/ 上发生的情况,我发现启用了“标题”选项后,Shiny 会抛出一个错误,指出“列数多于列名称。”
此外,我的 Excel 文件包含名为“Temperature”和“A1”的两列。但是,将 CSV 文件上传到 Shiny 时,这些列名称将被解释为列内的数据点,而不是实际的列标题。看 图片
此外,我的数据包含逗号(,)作为小数分隔符,这可能会导致解析问题。我尝试将 Excel 文件中的所有逗号替换为句点 (.),然后再将其导出到 CSV,但这似乎无法解决问题。
我通过将 Excel 文件导出为 CSV UTF-8 格式来保存数据,然后直接将其上传到应用程序中。 这就是excel。 这就是 csv 与 txt 的样子:
Temperature;A1
71,85;5,62
71,79;5,68
71,82;5,58
71,79;5,57
71,82;5,55
71,79;5,55
71,79;5,54
71,82;5,51
我使用的闪亮应用程序是:https://pavloh.shinyapps.io/hrmR/来自Pavlo Hrab(http://doi.org/10.5281/zenodo.4491296)
示例数据
df1 <- data.frame(Temperature = c(71.85, 71.79, 71.82, 71.79, 71.82, 71.79, 71.79, 71.82, 71.82), y = c(5.62, 5.68, 5.58, 5.57, 5.55, 5.55, 5.54, 5.51,5.52))
这是用 R 编写的,小数被写成句点。我的实际数据从 xlsx 文件导出到 csv,其中小数被写为小数
脚本:
# Look at file upload, As soon as file is uploaded prepare the data and save it
observeEvent(input$hmr,{
# Read the first line and define the delimiter. Then read the whole data
L <- readLines(input$hmr$datapath, n = 1)
if (grepl(";", L)) vals$df <- read.csv2(input$hmr$datapath) else vals$df <- read.csv(input$hmr$datapath)
# Drop NA columns
vals$df <- vals$df[,colSums(is.na(vals$df))<nrow(vals$df)]
write.csv(vals$df, file = "data.csv", row.names = F)
})
# Drop data from master dataframe (columns - individual results)
observeEvent(input$drop,{
to_drop <- input$drop_txt
# First split the input by comma, then by range
commas <- strsplit(to_drop, ",")
ranges_drop <- trimws(unlist(strsplit(unlist(commas)[grepl("-", unlist(commas))], "-")))
ind_col_drop <- trimws(unlist(commas)[!grepl("-", unlist(commas))])
# Logic on how to split the data - like an individual column, or by range of columns. First go by ranges
if (length(ranges_drop) > 0) {
vals$df <- vals$df%>%
select(!ranges_drop[1]:ranges_drop[2])
}
if (length(ind_col_drop) > 0){
vals$df <- vals$df%>%
select(-one_of(ind_col_drop))
}
# Set recluster to true
vals$kmeans_cluster_actions <- TRUE
})
# If reset button is triggered -> reset the daatframe (TO-DO: Add additional values change to recompute everything)
observeEvent(input$reset,{
vals$df <- read.csv("data.csv")
})
有人可以建议我如何调整 Excel 文件或导出设置以确保 CSV 文件可由 Shiny 应用程序读取吗?
我尝试在应用程序中上传数据,希望它能根据我输入的数据显示熔解曲线分析。但我不断收到错误。
我认为数据格式问题是一个转移注意力的问题。请参阅下面的表示,其中示例数据被下载、子集化和格式化,以便与 OP 的数据相似,然后写出为:
这些文件中的任何一个都可以上传到应用程序https://pavloh.shinyapps.io/hrmR/并成功处理。
相反,我认为 OP 的数据根本不适合分析。
# download and unzip example file
zip_file <- "hrmR-v0.1-alpha.zip"
download.file("https://zenodo.org/records/4491296/files/pavlohrab/hrmR-v0.1-alpha.zip?download=1", zip_file, mode = "wb")
unzip(zip_file, "pavlohrab-hrmR-494cffb/example/example.csv", junkpaths = TRUE)
# read and subset example file to be similar to OP data structure
# but with way more observations
data_csv <- read.csv("example.csv")
data_csv <- data_csv[, 1:2]
names(data_csv)[2] <- "A1"
# write comma separated with decimals
write.csv(data_csv, "example_write.csv.csv", quote = FALSE, row.names = FALSE)
# notice formatting is as desired
cat(paste(readLines("example_write.csv.csv", 5), collapse = "\n"))
#> Temperature,A1
#> 65,3495.918232
#> 65.2,3507.963312
#> 65.4,3520.008391
#> 65.6,3532.053471
# write semicolon separated with commas
write.csv2(data_csv, "example_write.csv2.csv", quote = FALSE, row.names = FALSE)
# notice formatting is as desired
cat(paste(readLines("example_write.csv2.csv", 5), collapse = "\n"))
#> Temperature;A1
#> 65;3495,918232
#> 65,2;3507,963312
#> 65,4;3520,008391
#> 65,6;3532,053471
创建于 2024-05-07,使用 reprex v2.1.0