如何编写一个闪亮的互动应用程序来搜索Twitter:多做有R奖金视频

InfoWorld的|2020年1月25日,

了解如何将代码从41集到一个互动的闪亮的Web应用程序。

版权所有©2020Raybet2

类似的
你好,我是IDG的Sharon Machlis,这里有一个额外的奖励,做更多的R视频:创建一个互动闪亮的网页应用程序来跟踪推文通过一个标签。
主要情节展示了如何搜索鸣叫,它们导入R,并创建一个排序,过滤表。此视频还需要的代码,用另外的搜索和过滤功能。让我们开始吧!
在RStudio中,这里是主要章节的代码。如果你想了解这些,请浏览YouTube或InfoWorld上的第41集。
现在让我们把它变成一个本地交互式闪亮的应用程序,甚至更多的过滤可能性。
首先,我会去文件>新建文件>新建闪亮的Web应用程序创建在RStudio一个新的子目录一个新的闪亮的应用程序。我会打电话给我的应用程序TwitterSearch但你可以叫你的任何东西。你会得到一个默认app.R文件。
有光泽的应用程序的UI部分是用户界面,或前端的HTML页面,该用户 - 在这种情况下,你 - 与相互作用。服务器部分是背端面R的代码,完成所有的计算,以使用户的请求实际工作。
我通常首先删除默认app.R文件中的大部分注释,更改标题,然后加载所需的所有包。

接下来,我将添加搜索tweet、将其导入到R并修改一个版本以在表中显示的代码—但是我将对其进行一点美化。
我知道我想要URL html格式的功能,我在主要情节。我将把这个URL函数复制到app.R文件的顶部,在所有交互代码之前。(我也可以把它放在一个单独的帮助文件和源文件。)我的应用程序的顶部现在是这样的:
接下来,我将添加代码来创建从我的搜索查询的初始Twitter的数据帧。那云在app.R的服务器部分。由于该数据帧将改变和更新根据用户的要求是什么,我需要使它的反应值。
到目前为止,有两个项目,用户可以改变:包括hashtag搜索查询和鸣叫返回的数量。而不是在文件的顶部硬编码值,我想添加为输入用户可以更改。
这意味着增加在app.R UI部两个用户输入字段:hashtag_to_search和num_tweets_to_download。我会为进入主题标签和数字输入框或滑块进入微博的数量要求创建一个文本框。
对于微博的号码,我会通过保持排在默认情况下,滑块开始app.R.However, I’ll change its id to num_tweets_to_download, the label that the user sees to “Number of tweets to download:”, the min value to 100, the max value to 18000, the default value to 200, and step (how much is added or subtracted with each slight move of the slider) to 100.
我还打算以删除括号中的服务器部分的一切,因为默认的应用程序将无法正常工作了,现在我改变了投入。
如果我点击我的RStudio面板的右上方的Run应用按钮运行应用程序 我可以看到我的滑块-尽管它还没有做任何事情。
如果可以是一个有点难以得到移动滑块时,你想要的精确值。我要去那个滑块更改为numericInput()箱:
这给了我一个盒子,你可以键入,而不是一个滑块。
接下来,我要添加一个文本输入框与闪亮的为textInput()函数的主题标签查询。我把盒子的inputId是hashtag_to_search,标签为“#标签来搜索”,默认值为“#rstudioconf”。我的侧边栏面板的代码现在看起来是这样的:
请注意,由于我向侧边栏面板添加了第二个输入参数,所以在第一个输入之后需要一个逗号。在编写漂亮的应用程序时,正确使用括号和逗号是一个挑战。逐个创建输入和输出,并在每次添加后运行代码,可以帮助更容易地发现问题。
让我运行这个更新后的代码
基本的侧边栏已经完成了,但是我还需要在ui中输入一个信息来告诉shiny我希望我的tweet表显示在哪里。我将把这个占位符放在主面板中。默认应用程序的主面板有plotOutput(“distPlot”),它告诉shiny在页面的主要部分为一个情节保留空间。我想要一个reactable表,所以我将plotOutput()更改为reactableOutput(" tweet_table ")。如果我现在点击运行我的应用,什么都没有改变。但我们快到了。
这是最后一次以实际获取和显示的tweet。正如原代码,我将使用rtweet的search_tweet()函数来搜索tweets_df鸣叫和存储结果(其中将包含90列)。然后,我将创建从我的结果,格式化的表格显示tweets_table_data数据帧;和代码表。所有这些服务器逻辑具有对app.R文件的服务器部分内。
我可以通过一些修改重用我的原始代码。最重要的几点:1。任何根据用户输入而变化的变量都需要是反应值,而不是传统的R对象。我必须以与常规变量稍微不同的方式创建和处理它们。但令人高兴的是,这些调整都是微不足道的。2.任何时候,我需要用户输入的值,我必须引用它作为输入美元符号变量名,而不仅仅是变量名。
让我们看看它是如何工作的。
要将“常规”值转换为活性值,可以使用shiny的活性({})函数。

我只需要更改tweet_table_data代码的前三行,并在末尾添加右大括号和括号。
第一行创建,可以改变基于用户输入的对象。第二行告诉发亮直到tweet_df()数据帧中存在不能启动的tweet_table_data任何计算。不这样做,如果它试图运行不存在的数据帧计算我的应用程序可能会引发错误。也请注意,这是tweet_df括号不tweet_df,因为该数据帧是被动。
最后是表代码。它需要三个小的改变:
由于表格是可视化的,shiny需要知道把它放在哪里,它是什么。我将把表存储在一个名为output dollar sign tweet_table的变量中。这将它与用户界面中的reactableOutput(“tweet_table”)占位符连接起来。
我还将使用renderReactable()函数,以便让shiny知道它正在创建什么样的可视化。代码应该要求出现tweet_table_data数据帧,否则应用程序可能会抛出错误,试图从不存在的数据生成表。
2.代码还需要引用tweet_table_data用括号,因为它的反应。
我想如何改变应用程序做出反应,如果我改变鸣叫的默认主题标签或号码的请求。默认情况下,有光泽会尽量为我打字来更新数据。很多时候,这很酷的和有用的行为。但是,这不是其中之一。我不想让应用程序,使我每次键入一个字母或数字的时间到Twitter API的调用!我会冒险碰撞到我的API限制,如果我有很长的井号标签。
我不希望我的应用到Twitter API的请求,直到我点击“获取数据”按钮。RStudio建议这样的一个“动作按钮”。如同闪亮的大多数事情一样,这两个部分涉及:用户界面和服务器。
用于UI,我可以与actionButton()函数添加一个动作按钮。
让我把这个添加到UI中:
要使该按钮执行某些操作——或者更准确地说,停止应用程序执行某些操作,直到所有输入信息就绪——我需要将tweet_df()对象从一个响应值更改为响应事件。这意味着它不会根据用户输入的值更改值,而是根据用户采取的操作(比如单击按钮)更改值。
注意输入$my_button_id后的逗号!我已经花了相当多的时间来跟踪一些明显的错误,因为我忘记了活性函数的第一个参数后面有一个逗号。
我需要改变我的服务器代码中的tweet_df定义
如果我现在运行应用程序,没有什么应该发生的,直到我点击“获取数据”按钮。
我还可以对这个应用程序进行更多的增强,比如按日期范围过滤,添加一个下载数据按钮。我将在与此视频相关的文章中介绍这些内容。
这就是本期节目的全部内容,谢谢收看!R技巧,去做更多的与R在bit-dot-ly削减做更多页面,所有的小写字母,除了与R R .您还可以找到更多在YouTube IDG技术讨论频道播放列表,您可以订阅你千万不要错过一集。希望下次再见到你!






流行
来自IDG.tv的特色视频