แบ็กเอนด์- จะสร้างไฟล์ csv พร้อมผลลัพธ์ให้ดาวน์โหลดใน SHINY ได้อย่างไร

จะทำให้ผู้ใช้ดาวน์โหลดไฟล์ csv ที่เขียนโดยใช้โค้ดด้านล่างได้อย่างไร ผู้ใช้จะดึงไฟล์นี้โดยใช้ปุ่มดาวน์โหลดได้อย่างไร write.csv(csv_write, file = "test.csv",row.names=FALSE, na="")


person Ayan Saraf    schedule 20.07.2017    source แหล่งที่มา
comment
การค้นหาอย่างรวดเร็วทำให้ shiny.rstudio.com/articles/download.html   -  person Remko Duursma    schedule 20.07.2017
comment
สคริปต์ R ตัวรองของฉันกำลังแก้ไขปัญหาและให้วิธีแก้ปัญหาในรูปแบบไฟล์ CSV ฉันแค่ต้องการทราบวิธีทำให้ไฟล์ CSV นั้นพร้อมให้ดาวน์โหลด ลิงค์นี้แสดงวิธีการดาวน์โหลดข้อมูลจากฐานข้อมูลที่มีอยู่แล้วใน R ขอบคุณสำหรับความช่วยเหลือ! :)   -  person Ayan Saraf    schedule 20.07.2017
comment
หากคุณใช้ DT ในแอป Shiny คุณสามารถใช้ส่วนขยายของปุ่มได้ ดูส่วนขยายได้ที่นี่: rstudio.github.io/DT/extensions.html มันใช้งานง่าย จากประสบการณ์ของฉัน มันใช้งานง่ายกว่า และคุณสามารถจัดระเบียบมันได้ตามที่คุณต้องการโดยใช้ extend=collections และวางปุ่มที่ต้องการทั้งหมดไว้ในรายการ   -  person Asayat    schedule 21.07.2017


คำตอบ (1)


ในฟังก์ชันเซิร์ฟเวอร์ของคุณ คุณสามารถเขียนตัวจัดการการดาวน์โหลดได้ :

output$downloadData5 <- downloadHandler(
    filename = function() {'test.csv'},
    content = function(file) {
      write.delim(ftext(), file, row.names = FALSE,sep="\t")
    }
  )

โดยที่ ftext() เป็นฟังก์ชันที่ส่งคืน dataframe ของคุณที่คุณต้องการดาวน์โหลดเป็น csv
UI ของคุณจะมีฟังก์ชัน DashboardBody() ซึ่งคุณสามารถมีปุ่มดาวน์โหลดได้:

 tabPanel('First Touch Point Campaign Level', 
                 downloadButton('downloadData5', 'Download This Data !!',
                                style="display: block; margin: 0 auto; width: 230px;color: black;"),
                 dataTableOutput('datatable5'))   

ftext() เป็นฟังก์ชันรีแอกทีฟที่ส่งคืนดาต้าเฟรม รหัสจะเป็นดังนี้:

 ftext <- eventReactive(input$goButton, {
    df =   data.frame(replicate(10,sample(0:1,10,rep=TRUE)))     
    return(df)
  })
person anarchy    schedule 20.07.2017
comment
ขอบคุณ @Abhishek Kumar สำหรับการตอบกลับที่รวดเร็ว อะไรในฟังก์ชัน ftext() ที่จะส่งคืนไฟล์ csv ที่สามารถดาวน์โหลดได้ - person Ayan Saraf; 20.07.2017
comment
ขอบคุณ สิ่งนี้ช่วยได้ แต่ write.delim คืออะไรกันแน่? - person Ayan Saraf; 20.07.2017
comment
มันเหมือนกับ write.csv แต่แทนที่จะใช้ค่าที่คั่นด้วยเครื่องหมายจุลภาค คุณสามารถมีค่าที่คั่นด้วยตัวคั่นใดๆ ได้ คุณสามารถใช้ write.csv ได้เช่นกัน - person anarchy; 20.07.2017