- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚开始学习 Shiny,我正在尝试做一个简单的项目,以了解它作为开发工具的感受。
我的目标:做一个 wordcloud 应用程序。输入:一个 .txt 文件。输出:一个词云。
我收到一个“不正确的 cex 值”错误,我猜我的文件没有正确上传......我正确吗?如果是这样,文本文件的 read.csv 相当于什么?我收集到它是 read.table,但我显然错了,因为我在使用 read.table 时遇到错误
这是我的代码,大量改编自 WordCloud :
* global.r *
library(tm)
library(wordcloud)
library(memoise)
# Using "memoise" to automatically cache the results
getTermMatrix <- function(text) {
# Careful not to let just any name slip in here; a
# malicious user could manipulate this value.
myCorpus = Corpus(VectorSource(text))
myCorpus = tm_map(myCorpus, content_transformer(tolower))
myCorpus = tm_map(myCorpus, removePunctuation)
myCorpus = tm_map(myCorpus, removeNumbers)
myCorpus = tm_map(myCorpus, removeWords,
c(stopwords("SMART"), "thy", "thou", "thee", "the", "and", "but"))
myDTM = TermDocumentMatrix(myCorpus,
control = list(minWordLength = 1))
m = as.matrix(myDTM)
sort(rowSums(m), decreasing = TRUE)
}
function(input, output, session) {
# Define a reactive expression for the document term matrix
my_data <- reactive({
inFile <- input$files
if (is.null(inFile))
return(NULL)
data <- read.table(inFile, header=T, sep="\t", fileEncoding="UTF-8")
data
})
terms <- reactive({
# Change when the "update" button is pressed...
input$update
# ...but not for anything else
isolate({
withProgress({
setProgress(message = "Processing corpus...")
getTermMatrix(input$inFile)
})
})
})
# Make the wordcloud drawing predictable during a session
wordcloud_rep <- repeatable(wordcloud)
output$plot <- renderPlot({
v <- terms()
wordcloud_rep(names(v), v, scale=c(4,0.5),
min.freq = input$freq, max.words=input$max,
colors=brewer.pal(8, "Dark2"))
})
}
fluidPage(
# Application title
titlePanel("Word Cloud"),
sidebarLayout(
# Sidebar with a slider and selection inputs
sidebarPanel(
#######
fileInput("selection", "Choose a text:"),
#
actionButton("update", "Change"),
hr(),
sliderInput("freq",
"Minimum Frequency:",
min = 1, max = 50, value = 15),
sliderInput("max",
"Maximum Number of Words:",
min = 1, max = 300, value = 100)
),
# Show Word Cloud
mainPanel(
plotOutput("plot")
)
)
)
最佳答案
需要进行一些更改/编辑才能使您的应用程序正常运行!您处理文件输入的方式完全错误:)。可以直接放input$selection
在 getTermMatrix()
函数,然后读取 global.R
中的文件内容.看看this了解如何在 Shiny 中上传文件并阅读其内容。
错误是因为没有读取文件,因此没有数据可以输入 Corpus()
功能。在以下代码中,由于启动应用程序时没有文件输入,因此显示未读取文件的错误。但是,上传文件后,错误消失并显示语料库。为了不显示错误,我包含了一个小 tags()
在 ui.R.也许你可以找到一个更好的解决方法。
查看以下工作代码并尝试将其扩展到您的 future 用途。
ui.R
shinyUI(
fluidPage(
# Application title
titlePanel("Word Cloud"),
tags$style(type="text/css",
".shiny-output-error { visibility: hidden; }",
".shiny-output-error:before { visibility: hidden; }"
),
sidebarLayout(
# Sidebar with a slider and selection inputs
sidebarPanel(
#######
fileInput("selection", "Choose a text:"),
actionButton("update", "Change"),
hr(),
sliderInput("freq",
"Minimum Frequency:",
min = 1, max = 50, value = 15),
sliderInput("max",
"Maximum Number of Words:",
min = 1, max = 300, value = 100)
),
# Show Word Cloud
mainPanel(
plotOutput("plot")
)
)
)
)
server.R
library(shiny)
shinyServer(function(input, output, session) {
# Define a reactive expression for the document term matrix
terms <- reactive({
# Change when the "update" button is pressed...
input$update
# ...but not for anything else
isolate({
withProgress({
setProgress(message = "Processing corpus...")
getTermMatrix(input$selection)
})
})
})
# Make the wordcloud drawing predictable during a session
wordcloud_rep <- repeatable(wordcloud)
output$plot <- renderPlot({
v <- terms()
wordcloud_rep(names(v), v, scale=c(4,0.5),
min.freq = input$freq, max.words=input$max,
colors=brewer.pal(8, "Dark2"))
})
})
global.R
library(tm)
library(wordcloud)
library(memoise)
# Using "memoise" to automatically cache the results
getTermMatrix <- function(f) {
# Careful not to let just any name slip in here; a
# malicious user could manipulate this value.
text <- readLines(f$datapath,encoding = "UTF-8")
myCorpus = Corpus(VectorSource(text))
myCorpus = tm_map(myCorpus, content_transformer(tolower))
myCorpus = tm_map(myCorpus, removePunctuation)
myCorpus = tm_map(myCorpus, removeNumbers)
myCorpus = tm_map(myCorpus, removeWords,
c(stopwords("SMART"), "thy", "thou", "thee", "the", "and", "but"))
myDTM = TermDocumentMatrix(myCorpus,
control = list(minWordLength = 1,wordLengths=c(0,Inf)))
m = as.matrix(myDTM)
sort(rowSums(m), decreasing = TRUE)
}
关于R Shiny - cex 值不正确 - 上传文本文件,wordcloud 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31414464/
我终于开始了解 Hadley Wickham 令人印象深刻的 ggplot2 包,并且正在努力阅读他的书。 在我的工作中,我经常使用文本标签显示散点图。这意味着 plot()命令,后跟 text()
我绘制了子集 A1 中因子变量“answer”的图。我想减小两个轴上的文本大小,以适应 x 轴上的两个极值。但是,使用 cex.axis 时,只有 y 标签上的字体大小受到影响,而 x 轴上的字体大小
我绘制了子集 A1 中因子变量“answer”的图。我想减小两个轴上的文本大小,以适应 x 轴上的两个极值。但是,使用 cex.axis 时,只有 y 标签上的字体大小受到影响,而 x 轴上的字体大小
我目前正在尝试连接到 CEX.IO 比特币交易所的 websocket。 Websocket 连接正常,但在身份验证时出现错误:时间戳不在 20 秒范围内。我不知道这是什么错误。 createSign
我正在用 R 绘制一个非常简单的图,并希望更改 y 轴(年份)上的字体大小。我已经使用了所有的cex。命令,可以改变除了这些年之外的一切。 这是我的矩阵(输入): 2010 2011 CC
我目前正在尝试连接到 CEX.IO 比特币交易所的 websocket。Websocket 连接正常,但在身份验证时出现错误:Timestamp is not in 20sec range。我不知道这
我刚刚开始学习 Shiny,我正在尝试做一个简单的项目,以了解它作为开发工具的感受。 我的目标:做一个 wordcloud 应用程序。输入:一个 .txt 文件。输出:一个词云。 我收到一个“不正确的
我想使用filled.contour() 来绘制矩阵中的一些数据。 一切都很完美,直到我将图形导入我的 tex 文件并意识到我需要调整字体大小才能使其在最终文档中可读。 不幸的是,我似乎无法在 fil
我使用包括group(1 = smoke,2 = control),gender(1 = m,2 = f)和诸如体重之类的因变量的数据库进行了线性回归。我想用情节看到群体和性别之间的相互作用。我需要更
我正在 R 2.15.1 中使用 tm 和 wordcloud 包。我正在尝试制作文字云这是代码: maruti_tweets = userTimeline("Maruti_suzuki", n=10
我在 R 2.15.1 中使用 tm 和 wordcloud 包。 我正在尝试从 DTM 制作词云。这是代码: library(wordcloud) thedtmsparse = inspect(sp
我是一名优秀的程序员,十分优秀!