사용자가 값을 입력 할 수있는 반짝이는 앱을 만들려고합니다. 데이터에 누락 된 값은 사용자 제공 값 또는 기본값으로 대체됩니다. 사용자가 값을 입력하면 새 파일은 이름 data_new를 생성합니다. 이 파일을 사용하여 누락 된 값을 대체하기 위해 원시 데이터 세트를 추가로 업데이트하려고합니다. 반짝 이는 응용 프로그램 파일 및 업데이트 데이터 테이블에서 입력을받는 방법을 잘 모르겠습니다.단일 코드에서 반짝이는 출력을 사용하여 데이터 테이블을 업데이트하십시오.
코드 제 1 부 :
library(shiny)
library(readr)
library(datasets)
data_set <- structure(list(A = c(1L, 4L, 0L, 1L), B = c("3", "*", "*", "2"
), C = c("4", "5", "2", "*"), D = c("*", "9", "*", "4")), .Names = c("A", "B", "C", "D"), class = "data.frame", row.names = c(NA, -4L))
data_set1 <- data_set
my.summary <- function(x, na.rm=TRUE){
result <- c(Mean=mean(x, na.rm=na.rm),
SD=sd(x, na.rm=na.rm),
Median=median(x, na.rm=na.rm),
Min=min(x, na.rm=na.rm),
Max=max(x, na.rm=na.rm),
N=length(x),
Nmiss = sum(is.na(x)))
}
# identifying numeric columns
ind <- sapply(data_set1, is.numeric)
# applying the function to numeric columns only
stats_d <- data.frame(t(data.frame(sapply(data_set1[, ind], my.summary))))
stats_d <- cbind(Row.Names = rownames(stats_d), stats_d)
colnames(stats_d)[1] <- "variable"
data_new <- stats_d
#rownames(data) <- c()
data_new["User_input"] <- data_new$Max
data_new["OutlierCutoff"] <- 1
data_new["Drop_Variable"] <- "No"
shinyApp(
ui <-
fluidPage(
titlePanel("Univariate Analysis"),
# Create a new row for the table.
sidebarLayout(
sidebarPanel(
selectInput("select", label = h3("Select Variable"),
choices = unique(data_new$variable),
selected = unique(data_new$variable)[1]),
numericInput("num", label = h3("Replace missing value with"), value = unique(data_new$variable)[1]),
selectInput("select1", label = h3("Select Variable"),
choices = unique(data_new$variable),
selected = unique(data_new$variable)[1]),
numericInput("num1", label = h3("Outlier Cutoff"), value = unique(data_new$variable)[1],min = 0, max = 1),
selectInput("select2", label = h3("Select any other Variable to drop"),
choices = unique(data_new$variable),
selected = unique(data_new$variable)[1]),
selectInput("select3", label = h3("Yes/No"),
choices = list("Yes", "No")),
submitButton(text = "Apply Changes", icon = NULL)),
mainPanel(
dataTableOutput(outputId="table")
)) )
,
Server <- function(input, output) {
# Filter data based on selections
output$table <- renderDataTable({
data_new$User_input[data_new$variable==input$select] <<- input$num
data_new$OutlierCutoff[data_new$variable==input$select1] <<- input$num1
data_new$Drop_Variable[data_new$variable==input$select2] <<- input$select3
data_new
})
})
코드 2 부 :
data_set[as.character(data_new$variable)] <- Map(function(x, y)
replace(x, is.na(x), y), data_set[as.character(data_new$variable)], data_new$User_input)
data_setN <- data_set
어디서나 'data.table' 개체를 사용하고 있지 않습니다. 어쩌면 당신은'dt' 패키지와 그것들의 DataTables (또는 그것들을 참조 할 것)에 대해서 생각하고있을 것입니다. – lmo
이것은 처음으로 반짝 반짝 빛나는 프로그램 인 것처럼 복잡한 작업입니다.그것은 반응 형 프로그램을 위해 필요한 방식으로 실제로 구조화되지 않았습니다. 그것으로 당신을 도울 방법에 대해 생각. –