小编elc*_*ano的帖子

避免 R Shiny 中连字符后的换行符

看起来,Shiny 会在连字符 ( ) 字符后自动引入换行符-,至少在与数据表一起使用时是如此(请参见下面的示例)。我猜这与HTML 中的类似问题有关,并且可能在将文档呈现为 HTML 时发生,但在这里用“不间断”版本 ( ‑) 替换连字符将不起作用,将连字符替换为长版本 ( \xe2\x80\x94)。

\n\n

下面是重现此问题的示例代码,其中我创建了一个名称中带有减号的变量,并希望在表头中显示其名称(包括减号)。正如您所看到的,后面出现了一个换行符-

\n\n
---\ntitle: "Example"\nruntime: shiny\ntheme: simplex\nvertical_layout: fill\noutput:\n  flexdashboard::flex_dashboard:\n  orientation: rows\n---\n\nExplore\n======================================================================\n\n```{r echo = FALSE}\nlibrary("tidyverse")\nlibrary("shiny")\nlibrary("DT")\n```\n\n```{r echo = FALSE}\ncreateDataTable <- function (data) {\n\n  data %>%  \n\n    DT::datatable(\n      extensions = c(\'Buttons\',\'Scroller\'),\n      rownames=FALSE,\n      options = list(\n        paging = TRUE,\n        pageLength = nrow(data),\n        searching = TRUE,\n        fixedColumns = TRUE,\n        autoWidth = FALSE,\n        ordering = TRUE,\n        scroller = TRUE,\n        scrollX = \'400px\',\n        scrollY = \'300px\',\n …
Run Code Online (Sandbox Code Playgroud)

html r shiny dt flexdashboard

3
推荐指数
1
解决办法
971
查看次数

替换“表达式”类的 R 对象中的字符

我正在尝试替换 R 表达式中的字符(而不是字符串中的字符),但似乎替换字符的常用函数在这种情况下不起作用。例如,给定以下情况:

exp <- expression(italic(N[T]))
class(exp) # "expression"
Run Code Online (Sandbox Code Playgroud)

string::str_replacebase::gsub无法转换此表达式对象中的字符。第一个返回警告消息,并且在两种情况下都返回“字符”类的对象:表达式对象丢失

exp %>% stringr::str_replace(pattern = "T", replacement = "i")
Run Code Online (Sandbox Code Playgroud)

[1]“斜体(N[i])”

警告消息:在 stri_replace_first_regex(string,pattern,fix_replacement(replacement), 中:参数不是原子向量;强制

exp %>% base::gsub(pattern = "T", replacement = "i")
Run Code Online (Sandbox Code Playgroud)

[1]“斜体(N[i])”

是否可以在不丢失类类型的情况下转换表达式中的字符?

像下面这样的技巧是行不通的:

exp %>% base::gsub(pattern = "N", replacement = "i") %>% base::gsub(pattern = "^", replacement ="expression(") %>% base::gsub(pattern = "$", replacement = ")")
Run Code Online (Sandbox Code Playgroud)

r gsub

3
推荐指数
1
解决办法
913
查看次数

在 R 包中包含 hpp 文件

我正在编写一个 R 包,使用 Rcpp 将用 C++ 编写的函数调用到 R 代码中。其中一些函数和模板按照 boost 使用的约定编写在扩展名为 .hpp 的文件中(也在此处讨论)。

这在构建 ( R CMD build .) 和检查 ( R CMD check --as-cran package.tar.gz) 包时不会导致错误,但会返回下一个警告:

Subdirectory ‘src’ contains:
  file.hpp example.hpp
These are unlikely file names for src files
Run Code Online (Sandbox Code Playgroud)

好的,这不是一个大问题,但我担心的是,为什么会出现警告?在 R 社区中命名 *hpp 文件是否被认为是一种不好的做法?为什么我应该使用 *cpp/*h 文件而不是 *hpp 作为模板,是否有客观或社区原因?

r rcpp r-package

3
推荐指数
1
解决办法
119
查看次数

计算不同因素组合的行数

考虑到诸如 classic 之类的数据集mtcars,我想知道不同级别因素的观察数(=行),将它们分开以及一起考虑。

例如,下面的代码将生成一个列 N,其中包含每个级别的 cyl 和 gear 的观察数,但不会分别生成 cyl 和 gear 的观察数。

mtcars %>% dplyr::group_by(cyl, gear) %>% dplyr::summarise(N = n()) 
Run Code Online (Sandbox Code Playgroud)

我知道可以以类似的方式获得单独数量的 cyl 和 gear 观测值,创建单独的数据帧,然后将它们合并在一起。以下将生成预期的输出:

df <- mtcars %>% dplyr::group_by(cyl, gear) %>% dplyr::summarise(N = n())
df_gear <- mtcars %>% dplyr::group_by(gear) %>% dplyr::summarise(Ngear = n())
df_cyl <- mtcars %>% dplyr::group_by(cyl) %>% dplyr::summarise(Ncyl = n())
df %>% dplyr::left_join(df_cyl) %>% dplyr::left_join(df_gear)
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一种更简洁的方法来生成这个数据集,希望不需要生成中间数据集。

r dplyr

2
推荐指数
1
解决办法
71
查看次数

从C++调用R函数

我想执行多项逻辑回归[使用glm()]并在C++中做一些图[gplot()].

我无法在C++中为这种回归编写函数,但也许可以打开R并调用glm()函数以便在C++中执行它,是吗?怎么样?我很感激任何想法.

提前致谢!

c++ r call logistic-regression

1
推荐指数
1
解决办法
445
查看次数

Rmarkdown 和 Renv 的可重复性问题

我最近注意到相同的 R markdown 文档在不同条件下(例如不同项目)运行时会生成不同的图。作为一个玩具示例,请考虑以下文档:

---
title: "Example"
output:
  html_document
---

```{r plot, warning=FALSE, echo=FALSE}
library("tidyverse")
tibble(mu = c(-9.4, -9.3, -9.2, -9, -8.9, -8.8, -8.7, -8.5, -8.4, -8.3, 0),
       N = c(1, 2, 1, 1, 1, 3, 1, 1, 1, 1, 3)) %>%
  ggplot() +
  geom_point(aes(x=mu, y=N)) + 
  geom_bar(aes(x=mu, y=N), stat="identity", fill="grey", colour="black", width=0.1) +
  theme(panel.background=element_blank(),
        axis.title=element_text(size=20),
        axis.text=element_text(size=15))
```
Run Code Online (Sandbox Code Playgroud)

它应该产生一个像下面这样的情节,有时我会成功并得到它:

在此处输入图片说明

然而,其他时候,我得到了这个替代版本,这是无稽之谈:

在此处输入图片说明

我注意到在加载tidyverse包后,有些版本是不同的。例如,第一个 ggplot 是 3.2.1,而后者是 3.3.0。这后来有一个不同的版本号,因为它是在使用 Renv 的 R 项目中单独维护的。

好的,会不会是版本号不同?即使考虑到我很久以前就知道这个包的这些不同版本,我也很难理解在任何ggplot 版本中给定此代码如何生成第二个图。如果不是版本号,是否有可能导致此问题的任何提示?

r ggplot2 r-markdown tidyverse renv

1
推荐指数
1
解决办法
68
查看次数

将GUI添加到C++软件的最佳语言

我编写了一个可以在命令行中使用的C++软件,显然,它可以在不同的平台(Linux,Windows和Mac)中编译和执行.

这个软件非常简单,它只是在命令终端中显示一个菜单,有几个选项,相应地输入文件(.csv),几秒钟后运行,并打印输出文件(也是.csv).

现在我想为它编写一个独立于平台的GUI而不改变我原来的源代码.

哪种语言最好?C++?Java的?有没有人对此有经验或建议?

非常感谢你!

c++ user-interface

0
推荐指数
1
解决办法
1497
查看次数