如何将列替换为第一行RSHINY
这是我的闪亮应用程序。现在我无法共享运行它的数据,但基本上这个应用程序有多个CSV保存在./data文件夹中。我想做的是比较两对csv。现在,当我从下拉菜单中选择CSV文件并进行比较时,我有一些列名称混乱的结果表,这意味着我应该删除列名称并用第一行数据替换它们,然后,在比较了其他文件之后,我仍然得到了其他结果,并且得到了正确的列名,我不必替换这些列名如何将列替换为第一行RSHINY,r,shiny,shinydashboard,R,Shiny,Shinydashboard,这是我的闪亮应用程序。现在我无法共享运行它的数据,但基本上这个应用程序有多个CSV保存在./data文件夹中。我想做的是比较两对csv。现在,当我从下拉菜单中选择CSV文件并进行比较时,我有一些列名称混乱的结果表,这意味着我应该删除列名称并用第一行数据替换它们,然后,在比较了其他文件之后,我仍然得到了其他结果,并且得到了正确的列名,我不必替换这些列名 library("shiny") library(daff) library(dplyr) library(shinythemes) librar
library("shiny")
library(daff)
library(dplyr)
library(shinythemes)
library("DT")
library(readr)
library(stringr)
library(tidyr)
library(purrr)
library(janitor)
library(data.table)
library(magrittr)
library(plyr)
setwd("path")
ui = fluidPage(
titlePanel("Automated Data Dictionary Comparison"),
sidebarLayout(
sidebarPanel(
selectInput(inputId = 'Dic1',
label = 'Choose First Data Dictionary:',
choices = list.files(path = "./data",
full.names = FALSE,
recursive = FALSE)),
selectInput(inputId = 'Dic2',
label = 'Choose Second Data Dictionary:',
choices = list.files(path = "./data",
full.names = FALSE,
recursive = FALSE)),
actionButton("do", "Replace columns"),
tags$hr(),
# This one is linked by the id 'download'
downloadButton('download',"Download the data")
),
mainPanel (
tabsetPanel(
tabPanel('Html Table',
HTML("<div style ='overflow:auto; height:500px; width:800px ' >"),
uiOutput('contents'),
HTML("</div>")
),
tabPanel('Diff Table',
fluidRow(
column(div(DT::dataTableOutput("mytable"), style = "font-size: 75%; width: 75%"),width = 12)
)
),
tabPanel("Modified table",
fluidRow(
column(div(DT::dataTableOutput("modified"), style = "font-size: 75%; width: 75%"),width = 12)
)
),
tabPanel("Added table",
fluidRow(
column(div(DT::dataTableOutput("added"), style = "font-size: 75%; width: 75%"),width = 12)
)
)
)
)
)
)
server = function(input, output){
# Parse first file
dataset1 <- reactive({
infile <- input$Dic1
if (is.null(infile)){
return(NULL)
}
x <- read.csv(paste0("./data/", infile[[1]]))
x
})
# Parse second file
dataset2 <- reactive({
infile <- input$Dic2
if (is.null(infile)){
return(NULL)
}
x <- read.csv(paste0("./data/", infile[[1]]))
x
})
# Create difference table then save
diff1 <- reactive( {
dd <- diff_data(data_ref=dataset1(), data=dataset2())
write_diff(dd, "./data/diffrev.csv")
diff_df <- readr::read_csv("./data/diffrev.csv")
ft <-as.data.frame(lapply(diff_df, iconv, from = 'UTF-8', to = 'UTF-8'), stringsAsFactors = FALSE)
ft
})
output$mytable <- renderDataTable({
diff1()
},options = list(scrollX = TRUE))
output$download <- downloadHandler(
filename = function(){"thename.csv"},
content = function(fname){
write.csv(thedata(), fname)})
}
shinyApp(ui = ui, server = server)
我的第一个问题是,在显示diff1表输出后,如何智能地删除列名并用第一行替换列名?我正在考虑使用一个操作按钮,我可以删除那些不需要列的表,但它仍然会从输出中删除需要的列
我期望的是,一旦我在输出中看到不需要的列,我可以替换它们,但一旦我在输出中看到需要的列,我应该选择保留它们请共享一些数据,甚至是合成的。我无法完全理解问题所在。它是通过读取带有或不带有列名的CSV来实现的吗?当列名不同时使用data_diff?还有别的问题吗?这与shiny有直接关系吗?@Omri374问题是我从第一个下拉列表中选择了文件,并与第二个下拉列表中的第二个文件进行比较。我需要帮助的问题是我在renderDatatable中获得的输出。我比较了一些文件,输出中的列弄乱了,我只是想用第一行替换这些列,但我仍然有一些比较,它们在输出中具有正确的列名称,我不需要替换它们。问题是在看到输出后,我如何选择替换或保留列名?请添加一个完全可复制的示例。我不知道你的两个数据帧是什么样子,所以我不能复制这个