첫 번째 Shiny 응용 프로그램을 쓰고 있습니다. 코드의 요지는 csv 파일에서 읽는 것입니다. 사용자가 앱에서 일부 입력에 응답하고 해당 데이터가 csv 파일에 추가됩니다. 의도는이 파일이 매일 보관되고 앱이 내용을 업데이트한다는 것입니다. 이 파일은 나중에 분석을 위해 사용됩니다.Shiny 앱이 작동하기 위해 서로 다른 두 개의 데이터 프레임에서 어떻게 이름을 동일하게 만드나요?
처음 열 때 내 앱이 성공적으로이 작업을 수행합니다. 그러나 세션을 닫은 후 나중에 다시 사용하려면 (점심 식사 전에 앱을 닫고 점심 식사 후에 다시 여는 것을 상상해보십시오) "오류 : 이름이 이전 이름과 일치하지 않습니다."라는 이유로 CSV 파일을 더 이상 추가 할 수 없습니다.
먼저 log.csv라는 세 개의 열 (A, B, C)이있는 머리글 행이있는 "빈".csv 파일이 있습니다.
다음 코드를 사용하여 Shiny App을 만듭니다.
library(shiny)
ui <- fluidPage(
# Application title
titlePanel("My 1st App"),
#Enter Agent
selectInput(inputId = "a", "A", c("Choose one" = "","A1", "A2", "A3"),
multiple = FALSE, selectize = TRUE, width = NULL, size = NULL),
#Enter Concentration
numericInput(inputId = "b", "Favorite Number", NULL, min = 0, max = NA),
#Enter Detection
radioButtons(inputId = "c", "Are you Happy Y/N", c("Y", "N")),
actionButton(inputId = "submit", "Submit", icon = NULL, width = NULL),
verbatimTextOutput("summary"),
log <- read.table("V:\\My\\Path\\log.csv",sep=",",header=T)
)
server <- function(input, output) {
data <- eventReactive(input$submit, {
t <- cbind(input$agent,input$conc, input$detect)
names(t) <- c("A","B","C")
t
})
output$summary <- renderPrint({data() #outputs data in allotted field.
write.table(rbind(log,data()), file="V:\\My\\Path\\log.csv", sep=",",
col.names= FALSE, row.names=F, append = T)
})
}
shinyApp(ui = ui, server = server)'
log.csv는 C.
헤더 A, B 원래 빈 파일입니다로그 dataframe의 이름이 반응 데이터에서 이름이 일치하지 않기 때문에 오류가 분명히 발생(). 일반 R에서
,이 코드를 사용하여 문제를 해결할 수 :이 논리를 사용하려고, 그래서
log <- data.frame(read.table("V:\\My\\Path\\log.csv",sep=",",header=T))
names(log)
a <- c("A1", "A3", "A2")
b <- c(0,1,2)
c <- c("y","n","n")
t <- data.frame(cbind(a,b, c))
names(t) <- c("A","B","C")
t
rbind(log,t)
를 서버 섹션의 반응 데이터 문을 업데이트 (코드는 이미이 업데이트를 반영 위) . 앱을 닫았다가 다시 열 때 여전히 작동하지 않습니다. 이전 데이터가 로그에 가득 차 있다면 이름이 일치하지 않는 이유는 무엇인지 모릅니다.
감사합니다. 며칠 동안 고생하고 많은 게시물을 조사했습니다. 이것은 첫 번째 게시물이므로 제대로 따르지 않은 모든 예의를 용서해주십시오. 그러나 게시하거나 질문하는 데 더 적절한 방법으로 가볍게 누드 기쁘게 생각합니다.
빠른 응답을 가져 주셔서 감사합니다. 거의 작동합니다. 내가 좀 고칠 수 있는지 좀 더 둘러 볼거야. 좋은 소식 : 다시 열면 추락하지 않습니다. 나쁜 소식 : 추가 시간을 시작한 후 추가 할 때 모든 이전 데이터를 반복해서 추가합니다. 예를 들어 첫 번째 인스턴스에 3 회의 관측이 있고 앱이 종료 된 경우입니다. 앱의 다음 인스턴스에서는 앱을 1 회 사용하고 나면 이제 7 회의 관측이 이루어집니다 (처음 3 번, 처음 3 번 반복, 새로운 관측). 나는 계속 지키 겠지만, 해결책이 있다면 받아 들일 것입니다. 다시 한번 감사드립니다. –
예 !!!!! D 조 감사드립니다! 이것은 효과가 있었다. 그런 다음 위의 내 문제에 더 대답하기 위해 rbind (log, t)는 어리석은 행동이었습니다. .csv에 append를 쓰는 작업이 이미 바인딩되었습니다. 다시 한 번 감사드립니다! –
그걸 듣기 좋습니다! 답변이 도움이 되었다면 옆에있는 체크 표시를 클릭하여 답변을 수락 할 수 있습니다. –