[英]How to read a column in a imported csv file in R shiny
我想從我的計算機導入一個 CSV 文件,其中包含指向閃亮應用程序的網絡文章的 URL。 然后我想從 CSV 文件中的“url”列中獲取 100 個 URL,並通過網絡抓取所有這些 URL 以創建“詞雲”
這是代碼的服務器部分。 我想從 CSV 文件中選擇“url”列,並使用 for 循環遍歷“url”的前 10 個列,以便從這些 URL 所引出的所有文章中收集數據。 然后我將該數據分配給名為“inputWords”的變量,然后將“inputWords”再次分配給名為“data”的變量以創建詞雲。
server <- function(input, output) {
data_source <- reactive({
if (input$source == "csv") {
data <- inputWords()
}
return(data)
})
inputWords <- reactive({
if (is.null(input$csv)) {
return("")
}
else if (is.table(input$csv)) {
CSVFile <- read.csv(input$csv$datapath)
Urls <- c(CSVFile$url[1:10])
pages <- list()
for (i in Urls) {
ArticlePages <- read_html(i)
articleText = ArticlePages %>% html_elements("h1.newsfull__title, p") %>% html_text()
pages[[i]] <- c(articleText)
}
pages[1:10]
}
})
這就是我將“data_source”分配給詞雲的地方
output$cloud <- renderWordcloud2({
create_wordcloud(data_source(),
num_words = input$num)
})
這是警告消息:
Warning: Error in if: argument is of length zero
以下適用於您的示例數據。 我不確定是什么問題,因為你沒有顯示你的ui
。
library(rvest)
ui <- fluidPage(
titlePanel("title panel"),
fluidRow(
column(3, fileInput("csv", h3("File input"))
)
),
fluidRow(
column(width = 9, verbatimTextOutput("t1"))
)
)
server <- function(input, output) {
# data_source <- reactive({
# if (input$source == "csv") {
# data <- inputWords()
# }
# return(data)
# })
inputWords <- reactive({
req(input$csv)
CSVFile <- read.csv(input$csv$datapath)
Urls <- as.character(CSVFile$url[1:10])
pages <- list()
for (i in Urls) {
ArticlePages <- read_html(i)
articleText = ArticlePages %>% html_elements("h1.newsfull__title, p") %>% html_text()
pages[[i]] <- c(articleText)
}
pages[1:10]
})
output$t1 <- renderText({paste(inputWords())})
}
shinyApp(ui = ui, server = server)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.