הפעלה של אפליקציית Shiny בלחיצת כפתור.

24 views
Skip to first unread message

אברהם פיינסילבר

unread,
Oct 4, 2018, 5:23:44 AM10/4/18
to Israel R User Group
שלום,

בניסיון להנגיש אפליקציית Shiny שבניתי לטובת עובדים שלא מכירים את R, הייתי שמח לאפשר להם להפעיל אפליקציה על ידי לחיצה על Icon שיריץ את האפליקציה.
האפליקציה מורכבת למדי וכוללת בתוכה קובץ markdown, שמסיבה לא מובנת לי לא עובד.
שאלתי את השאלה הזו גם בstackoverflow ועקבתי כמיטב יכולתי על ההוראות לפרסום שאלות (גם בStack וגם פה) ותהיתי האם יש לכם עצה טובה לשיפור השאלה שלי.
אני מעתיק ומתאים את השאלה שלי מstackoverflow... בבקשה תגידו לי אם משהו לא ברור או שיש נקודה שאני צריך לחדד:

אז מעט רקע יש לי אפליקציי Shiny שכתבתי על מנת להקל על עובדים שמפחדים מתכנות. במהלך הבניה של האפליקצייה החלטתי להטמיע קובץ rmarkdown ובו הוראות הפעלה לאפליקציה וכדו'. 
עד כאן הכול נהדר האפליקציה עובדת, ואמנם לקח זמן לכתוב ולשפר אבל היא עובדת נהדר.
עכשיו הגיע החלק שבו החלטתי שאנשים יכולים להפעיל את האפליקציה על ידי לחיצה על אייקון, בלי להצטרך את R בכלל. השתמשתי בלינק הבא: Running a Shiny app using a shortcut כדי לבצע את זה.
אבל עכשיו נתקלתי בבעיה שאני לא מסוגל לפתור.
כשאתה מריץ את האפליקציה ב-Shiny ידנית, הכול עובד ואין בעיה. אבל כשאתה משתמש באייקון עולה שגיאה: pandoc document conversion failed with error 127

קוד האפליקציה שלי [app.r] נראה ככה:

library(shiny)
library(knitr)
ui <- fluidPage(
titlePanel("testing for error"),
sidebarPanel(
textInput(inputId = "year",label = "Year",placeholder = "2018")
),
mainPanel(
uiOutput("report")
)
)
server <- function(input, output) {
output$report <- renderUI({
year <- input$year
rmdfiles <- c("C:\\Users\\ge_a\\Desktop\\test\\report_test.Rmd")
knitr::knit2pandoc(input = rmdfiles,encoding = "UTF-8",quiet = TRUE)
includeMarkdown("C:\\Users\\ge_a\\Desktop\\test\\report_test.md")
})
}
shinyApp(ui = ui, server = server)

כפי שניתן לראות, בתוך האפליקצייה הוטמע קובץ markdown דינאמי עם משתנים מהאפליקצייה, וכולל בתוכו מילים בעברית.

הנה הקוד של קוד ה-markdown שלי [report_test.rmd]: 


---
title: "Test"
author: "Abe"
date: "August 20, 2018"
output: html_document
---
<style>
h1 {
direction: rtl;
}
p {
direction: rtl;
color: #000000;
font-size: 14px;
}
</style>
השנה שלנו היא: `r year`
בעזרת הלינק שציינתי לעיל, יצרתי קובץ run.r וכן קובץ batch למטרת יצירת הקיצור דרך המבוקש שדרכו אנשים יוכלו להפעיל את האפליקצייה.
קובץ ה-run.r שלי הוא זה:

library(shiny)
Sys.setlocale("LC_ALL","hebrew")
runApp('C:/Users/ge_a/Desktop/test',launch.browser = TRUE)
קובץ ה-batch שלי [test.bat] כולל רק שורה 1:

"C:\Program Files\R\R-3.4.2\bin\R.exe" CMD BATCH "run.r"


אני מצרף את הפלט של sessionInfo כי ראיתי שזה עוזר לאנשים להבין עם איזו מערכת אני משתמש.


R version 3.4.2 (2017-09-28)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=Hebrew_Israel.1255 LC_CTYPE=Hebrew_Israel.1255 LC_MONETARY=Hebrew_Israel.1255 LC_NUMERIC=C
[5] LC_TIME=Hebrew_Israel.1255
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] bindrcpp_0.2 shiny_1.0.5 DT_0.2 gridExtra_2.3 shinyBS_0.61 XLConnect_0.2-13
[7] XLConnectJars_0.2-13 reshape2_1.4.3 dplyr_0.7.4 ggplot2_2.2.1 readxl_1.0.0
loaded via a namespace (and not attached):
[1] Rcpp_0.12.16 cellranger_1.1.0 pillar_1.2.1 compiler_3.4.2 plyr_1.8.4 bindr_0.1 tools_3.4.2 digest_0.6.15
[9] evaluate_0.10.1 jsonlite_1.5 tibble_1.4.2 gtable_0.2.0 pkgconfig_2.0.1 rlang_0.2.0.9001 yaml_2.1.14 rJava_0.9-8
[17] stringr_1.2.0 knitr_1.20 htmlwidgets_1.2 rprojroot_1.2 grid_3.4.2 glue_1.1.1 R6_2.2.2 rematch_1.0.1
[25] rmarkdown_1.6 magrittr_1.5 backports_1.1.1 scales_0.5.0.9000 htmltools_0.3.6 assertthat_0.2.0 mime_0.5 colorspace_1.3-2
[33] xtable_1.8-2 httpuv_1.3.5 stringi_1.1.5 lazyeval_0.2.1 munsell_0.4.3 markdown_0.8

בזמן שחיפשתי תשובה (כבר כמעט חודשיים) מצאתי את  ההסבר הזה לשגיאה שאני מקבל אבל אני לא מבין כל כך איך לפתור אותה אני כן מבין שהיא קשורה באוופן מסוים לזיכרון שהמחשב מפנה לפעולה.

תודה רבה מראש לכולם!!

amit gal

unread,
Oct 4, 2018, 7:11:36 AM10/4/18
to israel-r-...@googlegroups.com

--
You received this message because you are subscribed to the Google Groups "Israel R User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to israel-r-user-g...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

אברהם פיינסילבר

unread,
Oct 5, 2018, 4:01:07 AM10/5/18
to Israel R User Group

הי עמית,

כבר ניסיתי בעבר את הפתרון הזה, ובעוד שהאפליקציה אכן מופעלת באופן מלא, היא לא שמישה מכיוון שכל המלל הופך להיות ג'יבריש...

תקן אותי אם אני טועה אבל מה שהתכוונת זה שאני אחליף את השורות:

knitr::knit2pandoc(input = rmdfiles,encoding = "UTF-8",quiet = TRUE)
includeMarkdown("C:\\Users\\ge_a\\Desktop\\test\\report_test.md")

ב- 
HTML(markdown::markdownToHTML(knit(rmdfiles, quiet = TRUE, encoding = "UTF-8")))

אבל זה לא פותר את בעיית הג'יבריש... יש לך הצעה?

סופ"ש נעים ותודה רבה!!

אברהם פיינסילבר

unread,
Oct 8, 2018, 7:30:59 AM10/8/18
to israel-r-...@googlegroups.com
היי שלום לכולם!

אז מצאתי אחרי חודשים פתרון לבעיה הזו... אני ממש ממליץ לנסות אותה כי זה הופך את החוויית שימוש ב-Shiny לממש מגניבה!! במיוחד עבור אנשים בלי רקע מעמיק בתכנות...
קיבלתי תשובה ב-Stackoverflow ושם נאמר בעצם שהבעיה היא שהקובץ bat לא מצליח למצוא את ה-pandoc (למיטב הבנתי החלק שמעצב ובונה את אתר האינטרנט, ו-Shiny משתמש בו...) 
כשמריצים את האפליקצייה דרך הקובץ bat אז צריך לספק את המיקום הזה.

ולכן אם מוסיפים את השורה (בראש קובץ ה-bat) אז זה עובד!! :

path %PATH%;c:\program files\rstudio\bin\pandoc

אברהם.

‫בתאריך יום ו׳, 5 באוק׳ 2018 ב-11:01 מאת אברהם פיינסילבר <‪abe0...@gmail.com‬‏>:‬
--
You received this message because you are subscribed to a topic in the Google Groups "Israel R User Group" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/israel-r-user-group/QrXq-ZZoyag/unsubscribe.
To unsubscribe from this group and all its topics, send an email to israel-r-user-g...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages