2016-03-17 3 views
1

Я столкнулся с некоторыми проблемами, которые, когда я пытался развернуть свои блестящие приложения, получил это сообщение: Ошибка в значении [3L]: не удалось найти функцию setInternet2r - Приложение не удалось запустить - не удалось найти функцию «setInternet2»

вызовы: местные ... tryCatch ......

Execution остановил

setInternet2

код здесь

### install packages 
library(doParallel) 
library(devtools) 
library(lattice) 
library(shiny) 
library(stringr) 
library(lubridate) 
library(shinyBS) 
library(doSNOW) 

library(XML) 
library(httr) 
library(RCurl) 
library(wordcloud) 
library(tm) 
library(rJava) 
library(qdap) 
library(slam) 

runApp(list(
    server = shinyServer(function(input, output, session){ 
    observeEvent(input$getNews, { 
     output$News <- renderDataTable({ 
     # Create a Progress object 
     progress <- shiny::Progress$new(session, min=1, max=15) 
     progress$set(message = "(╯ ̄▽ ̄)╯ Loading...", value = 0) 

     # Close the progress when this reactive exits (even if there's an error) 
     on.exit(progress$close()) 

     data <- list() 
     tmp <- paste('.html', sep='') 
     url <- paste('https://www.ptt.cc/bbs/Stock/index', tmp, sep='') 
     html <- httr:::content(GET(url), encoding = "UTF-8") # xml2 
     html <- XML::xmlParse(html) # parse from xml2 to xml 
     url.list <- xpathSApply(html, "//div[@class='title']/a[@href]", xmlAttrs) 

     data <- rbind(data, paste('https://www.ptt.cc', url.list, sep='')) 
     data <- unlist(data) 

     # cl = makeCluster(rep('localhost', 8), 'SOCK') 
     # clusterSetupRNG(cl) 
     # clusterEvalQ(cl, source('R/R/GET.R')) 
     getDoc <- function(line){ 

      start <- regexpr('www', line)[1] 
      end <- regexpr('html', line)[1] 

      if(start != -1 & end != -1){ 

      url <- substr(line, start, end + 3) 
      name <- strsplit(url, '/')[[1]][4] 
      txtName <- gsub('html', 'txt', name) 
      if(!file.exists(paste0("document/news/", txtName))){ 
       # html <- httr:::content(GET(url, config = set_cookies("over18"="1")), encoding="UTF-8") 
       html <- httr:::content(GET(url), encoding = "UTF-8") 
       html <- XML::xmlParse(html) 
       doc <- xpathSApply(html, "//div[@id='main-content']", xmlValue) 
       #write(doc, paste0("document/news/", gsub('html', 'txt', name)), 
       #  encoding = "UTF-8") 
       writeLines(as.character(doc), paste0("document/news/", gsub('html', 'txt', name)), 
         useBytes=T) 
      } 
      } 
     } 
     # parSapply(cl, data, getDoc) 
     # stopCluster(cl) 
     sapply(data, getDoc) 

     cl <- makeCluster(4, type = "SOCK") 
     doSNOW:::registerDoSNOW(cl) 
     articles <- 
      foreach(i = 1:length(list.files("document/news/")), .combine = 'c') %dopar% { 
      readLines(paste0("document/news/", list.files("document/news/")[i]), encoding = "UTF-8")[1] 
      } 
     stopCluster(cl) 

     start = regexpr("新聞", articles) 
     end = regexpr("2016", articles) 

     news <- substr(articles, start = start - 1, stop = end + 3)[start != -1] 
     news 
     news2 <- substr(news, start = 1, stop = regexpr("時間", news) - 1) 

     # for messages 
     Sys.setenv(LANG = "Zh_TW") 
     Sys.setlocale("LC_ALL", "cht") 

     start = regexpr("時間", news) 
     end = regexpr("2016", news) 
     newsDate = substr(news, start = start + 6, stop = end + 3) 
     newsDate 

     Sys.setenv(LANG = "en") 
     Sys.setlocale("LC_ALL", "English") 
     newsDate = strptime(newsDate, format = "%b %d %H:%M:%S %Y") 
     newsDate = as.POSIXct(newsDate) 
     #newsDate = as.Date(newsDate, format = "%b %d %Y") 

     Sys.setenv(LANG = "Zh_TW") 
     Sys.setlocale("LC_ALL", "cht") 
     newsDF <- data.frame(Date = newsDate, Event = news2) 

     news <- newsDF 
     news <- news[order(news$Date, decreasing = TRUE), ] 
     news[as.Date(news$Date, format = "%b %d %Y") >= input$dateRange[1] & 
       as.Date(news$Date, format = "%b %d %Y") <= input$dateRange[2], ] 
     }) 
    }) 

    }), 
    ui = shinyUI(tagList(
    tags$head(tags$script(HTML("Shiny.addCustomMessageHandler('closeWindow', function(m) {window.close();});"))), 
    navbarPage(
    "MynavbarPage", inverse = TRUE, id = "navbar", 
    tabPanel("News", 
      sidebarLayout(
       sidebarPanel(
       width = 3, 
       bsTooltip("stocks", title = "Please enter stock code from yahoo finance.", placement = "bottom", trigger = "hover", options = NULL), 
       textInput("stocks", label = "Stock Code", value = "2330.TW"), 
       bsTooltip("dateRange", title = "This is a time period you apply WFA to.", placement = "bottom", trigger = "hover", options = NULL), 
       dateRangeInput("dateRange", label = "Choose Period", start = "2015-01-01", end = Sys.Date()), 
       actionButton("getNews", "Start", class="btn-primary btn-lg") 
       ), 
       mainPanel(
       bootstrapPage(
        dataTableOutput("News")) 
       ) 
      )) 
))) 
)) 

Но я могу запустить свое приложение локально. Мне было интересно, не связано ли это с настройками моего локального пути? Мое приложение находится в папке, например, «MyAPP», где включены ui.R и server.R. У меня также есть другая папка с именем «document» внутри MyAPP. Я использовал много list.file («document /»).

я не включил setInternet2 функцию в моем приложении, но я использую веб-интерфейсы, такие как HTTR, XML, тм и т.д.

Любые предложения?

Большое спасибо.

+0

Работал на моей машине. Вы можете ввести foo для поиска документов R для функции foo в студии R. Выполнение этого для setInternet2 говорит нам об этом из пакета utils. Попробуйте добавить библиотеку (utils), чтобы убедиться, что она загружена. – Marsenau

+0

Как вы развертываете свое приложение? У меня такое чувство, что попытка запуска кластера сокетов на shinyapps.io или AWS, вероятно, не будет летать. – mlegge

+0

Это функция, специфичная для Windows. Поэтому вам нужно быть более ясными о том, как вы попадаете в HOST, где он недоступен. –

ответ

0

Кажется, что следующая команда подключается к Интернету и загружает данные. И внутренне это настройка параметров Internet

html <- httr:::content(GET(url), encoding = "UTF-8") # xml2 

Вы можете попробовать следующее, которые помогут вам отлаживать

  1. Вместо загрузки HTML из Интернета, чтение из файла
  2. Если это работает то мы знаем наверняка, что код, который извлекает данные из интернета является проблема

с уважением, Anant

Смежные вопросы