有没有办法在闪亮的应用程序中插入(并评估)RMarkdown脚本.(注意,我不是在寻找在此处解释的RMarkdown中的闪亮应用程序,也不是在寻找闪亮的Markdown脚本(请参阅Shiny Gallery Markdown))
我正在构建一个包含文本,方程,代码块,图和交互元素的应用程序.为方便起见,我使用Markdown文件作为文本和方程式,并希望有时在两者之间(即在RMarkdown中写入大部分内容).由于闪亮的应用程序更复杂(我使用它shinydashboard
包括许多独特的功能),我宁愿选择不使用第一个链接中描述的方法.
最小的工作示例是:
R-文件:
library(shiny)
ui <- shinyUI(
fluidPage(
includeMarkdown("RMarkdownFile.rmd")
)
)
server <- function(input, output) {}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
和"RMarkdownFile.rmd"在同一个文件夹中:
This is a text
$$ E(x) = 0 $$
```{r, eval = T}
plot(rnorm(100))
```
Run Code Online (Sandbox Code Playgroud)
具体来说,我想得到代码块的评估(绘制一些东西......),我想得到渲染的数学方程式.
有任何想法吗?
感谢@Bunk的输入,我选择使用该命令将所有rmd
文件渲染到md
文件,knit
然后将md
文件包含在闪亮的应用程序中(我使用markdown而不是html,因为后者产生了方程式的一些问题).最后,将includeMarkdown
其包裹起来withMathJax
以确保正确显示方程式.
最终代码如下所示:
library(shiny)
library(knitr)
rmdfiles <- c("RMarkdownFile.rmd")
sapply(rmdfiles, knit, quiet = T)
ui <- …
Run Code Online (Sandbox Code Playgroud) 如何将数据拖放到闪亮的应用程序中?我可以拖放到一个区域并用javascript读取它,但我不知道如何闪亮注册它所以我可以在服务器上处理它.这是一个示例设置 - 它有点长b/c我不认为有内置的javascript函数来处理拖放操作.
当运行并且拖入数据集"dat.csv"时,它当前应该如下所示.目标是将已拖放到变量中的数据注册到input
可以在R中处理的数据中.
library(shiny)
ui <- shinyUI(
fluidPage(
tags$head(tags$link(rel="stylesheet", href="css/styles.css", type="text/css"),
tags$script(src="getdata.js")),
h3(id="data-title", "Drop Datasets"),
div(class="col-xs-12", id="drop-area", ondragover="dragOver(event)",
ondrop="dropData(event)"),
tableOutput('table'), # doesn't do anything now
## debug
div(class="col-xs-12",
tags$hr(style="border:1px solid grey;width:150%"),
tags$button(id="showData", "Show", class="btn btn-info",
onclick="printData('dat.csv')")),
div(id="data-output") # print the data
)
)
Run Code Online (Sandbox Code Playgroud)
## Make a sample dataset
# write.csv(data.frame(a=1:10, b=letters[1:10]), "dat.csv", row.names=FALSE)
server <- function(input, output, session) {
output$table <- renderTable(input$data) # this variable doesn't exist
}
Run Code Online (Sandbox Code Playgroud)
var datasets = {};
var dragOver …
Run Code Online (Sandbox Code Playgroud) 问题:为什么我不能sapply
在里面打电话aes()
?
下图的目标:创建显示死亡/生活比例的直方图,以便每个组/类型组合的比例总和为1(示例受前一篇文章启发).
我知道你可以通过在外面总结来制作这个数字,ggplot
但问题实际上是为什么函数不能在其中工作aes
.
## Data
set.seed(999)
dat <- data.frame(group=factor(rep(1:2, 25)),
type=factor(sample(1:2, 50, rep=T)),
died=factor(sample(0:1, 50, rep=T)))
## Setup the figure
p <- ggplot(dat, aes(x=died, group=interaction(group, type), fill=group, alpha=type)) +
theme_bw() +
scale_alpha_discrete(range=c(0.5, 1)) +
ylab("Proportion")
## Proportions, all groups/types together sum to 1 (not wanted)
p + geom_histogram(aes(y=..count../sum(..count..)), position=position_dodge())
Run Code Online (Sandbox Code Playgroud)
## Look at groups
stuff <- ggplot_build(p)
stuff$data[[1]]
## The long way works: proportions by group/type
p + geom_histogram(
aes(y=c(..count..[..group..==1] / …
Run Code Online (Sandbox Code Playgroud) 我虽然在某处读过(不记得在哪里)因为这些因素实际上并不比data.table中的字符向量更有效.这是真的?我在讨论是否继续使用因子在data.table中存储各种向量.近似测试object.size
似乎另有说明.
chars <- data.table(a = sample(letters, 1e5, TRUE)) # chars (not really)
string <- data.table(a = sample(state.name, 1e5, TRUE)) # strings
fact <- data.table(a = factor(sample(letters, 1e5, TRUE))) # factor
int <- data.table(a = sample(1:26, 1e5, TRUE)) # int
mbs <- function(...) {
ns <- sapply(match.call(expand.dots=TRUE)[-1L], deparse)
vals <- mget(ns, .GlobalEnv)
cat('Sizes:\n',
paste('\t', ns, ':', round(sapply(vals, object.size)/1024/1024, 3), 'MB\n'))
}
## Get approximate sizes?
mbs(chars, string, fact, int)
# Sizes:
# chars : 0.765 MB
# string : …
Run Code Online (Sandbox Code Playgroud) 我有以下内容data.frame
:
id name altNames
1001 Joan character(0)
1002 Jane c("Janie", "Janet", "Jan")
1003 John Jon
1004 Bill Will
1005 Tom character(0)
Run Code Online (Sandbox Code Playgroud)
列altNames
可以为空(即字符(0)),只有一个名称或名称列表.我想要的是一个data.frame
(或一个列表),其中每个条目name
和/或altNames
只出现一次与对应的id
一样,如下所示:
id name
1001 Joan
1002 Jane
1002 Janie
1002 Janet
1002 Jan
1003 John
1003 Jon
1004 Bill
1004 Will
1005 Tom
Run Code Online (Sandbox Code Playgroud)
这样做最有效的方法是什么?dplyr
利用甚至更好.谢谢
编辑:这是数据:
df <- data_frame(
id = c("1001", "1002","1003", "1004", "1005"),
name = c("Joan", "Jane", "John", "Bill", "Tom"),
altNames = list(character(0), c("Janie", …
Run Code Online (Sandbox Code Playgroud) 我是Emacs的新手.我安装了Projectile.
当我这样做时C-c p
,它说:
C-c p is undefined
Run Code Online (Sandbox Code Playgroud)
想知道出了什么问题?
以下是我的~/.emacs
档案.
(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)
(defvar required-packages
'(
projectile
) "a list of packages to ensure are installed at launch.")
(require 'cl)
; method to check if all packages are installed
(defun packages-installed-p ()
(loop for p in required-packages
when (not (package-installed-p p)) do (return nil)
finally (return t)))
; if not all packages are installed, check one by one and install the …
Run Code Online (Sandbox Code Playgroud) 我有一个因子列的data.table,我想拉出每行中最后一个非缺失值的标签.这是一种典型的max.col
情况,但我不想在我尝试使用data.table优化此代码时不必要地强制执行.实际数据也有其他类型的列.
这是一个例子,
## Some sample data
set.seed(0)
dat <- sapply(split(letters[1:25], rep.int(1:5, 5)), sample, size=8, replace=TRUE)
dat[upper.tri(dat)] <- NA
dat[4:5, 4:5] <- NA # the real data isnt nice and upper.triangular
dat <- data.frame(dat, stringsAsFactors = TRUE) # factor columns
## So, it looks like this
setDT(dat)[]
# X1 X2 X3 X4 X5
# 1: u NA NA NA NA
# 2: f q NA NA NA
# 3: f b w NA NA
# 4: k g h …
Run Code Online (Sandbox Code Playgroud) 我有一个数据集,我想根据其中一列生成多个图.也就是说,我希望能够使用ggplot为每个因素制作一个单独的图.
这是一些快速的样本数据:
Variety = as.factor(c("a","b","a","b","a","b","a","b","a","b")
Var1 = runif(10)
Var2 = runif(10)
mydata = as.data.frame(cbind(Variety,Var1,Var2))
Run Code Online (Sandbox Code Playgroud)
我想在Var2上生成Var1的两个单独的图,一个用于Variety A,第二个用于Variety B,最好是在单个命令中,但是如果有一种方法可以在不分割表的情况下进行,那也没关系.
Ctrl- c Ctrl- v让我在光标的位置查看文档的功能.但是我查看函数源代码的关键序列(比如F2键入Rstudio
)?我还不想使用这个debug
功能.
如何打印没有索引的长列表?
我得到的输出:
> print(1:100)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
[37] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
[55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 …
Run Code Online (Sandbox Code Playgroud) r ×9
data.table ×3
emacs ×2
ggplot2 ×2
shiny ×2
dataframe ×1
dplyr ×1
ess ×1
javascript ×1
knitr ×1
memory ×1
projectile ×1
r-markdown ×1