小编Pet*_*lis的帖子

如何获得R包的rmarkdown插图以逃避Solaris和OSX上的CRAN警告

我在CRAN上有几个R包,它们针对与pandoc无关的Solaris(有时是OSX)警告不能用于插件构建.例如,以下是ggseasCRAN上的结果,以及插图源代码 - 从提交给CRAN的版本略有变化,但没有以任何相关方式.

粗略的谷歌搜索表明这个问题很常见.在GitHub上为单个包找到十几个问题也很容易,但我找不到任何表明解决方案的问题.据推测,CRAN维护者只是让这一个过去了,但如果是这样的话,它并不是很整洁.我不喜欢勾选出"我已经解决了上次提交的任何注释和警告"的方框,但这不是真的.

现在,一些幸运或技术熟练的人有不会引起这个问题的rmarkdown小插曲.例如,tidyr小插曲没有对Solaris和OSX上CRAN任何警告.但是我在tidyr小插曲的序言中看不出任何不同之处:

---
title: "Tidy data"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Tidy data}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---
Run Code Online (Sandbox Code Playgroud)

或者在包含此行的DESCRIPTION文件中,

VignetteBuilder: knitr
Run Code Online (Sandbox Code Playgroud)

这与我的小插图不同,它确实引发了警告.这是我有的:

---
title: "ggseas - seasonal decomposition on the fly"
author: "Peter Ellis"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{ggseas - seasonal decomposition on the fly}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---
Run Code Online (Sandbox Code Playgroud)

我也有knitrrmarkdown在DESCRIPTION文件的"建议"中,这是在各种问题讨论中提到的一个解决方案(通常后跟"但它没有解决它").

我错过了什么?避免在CRAN上创建这些警告的秘诀是什么?不幸的是,这并不容易进行实验,所以如果我们能够为所有受此困扰的人们获得明确的答案,那将会很棒.

编辑/添加 - 完整的描述文件

Hadley Wickham认为问题最有可能出现在DESCRIPTION包的文件中,而不是插图本身.

这是ggseas一个包含生成警告的包的DESCRIPTION文件:

Package: …
Run Code Online (Sandbox Code Playgroud)

r cran knitr r-markdown

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

有没有办法将"作者"元数据添加到从R创建的pdf

在R中使用pdf()图形设备创建PDF时,可以使用title =参数轻松添加标题元数据到pdf().但是没有明显的添加作者的方法.

看一下R中的pdf()代码,关键似乎是C函数C_PDF,它显然没有作者参数,而且超出了我的破解能力.还有其他方法,比将我的图形输出编织成LaTeX创建的PDF更方便,包括作者信息并保存我们以后手动操作吗?

.External(C_PDF, file, old$paper, old$family, old$encoding, 
    old$bg, old$fg, old$width, old$height, old$pointsize, 
    onefile, old$pagecentre, old$title, old$fonts, version[1L], 
    version[2L], old$colormodel, old$useDingbats, old$useKerning, 
    old$fillOddEven, old$compress)
Run Code Online (Sandbox Code Playgroud)

我对此并不抱太大希望,因为对这个更广泛的问题没有令人满意的基于语言的答案......

pdf r

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

如何在direct.label中更改fontsize?

我无法更改direct.label(来自directlabels包)ggplot2图中的fontsize.请参阅下面的可重复示例 - 将标签旋转45度没有问题,使它们变为粗体,衬线和50%透明(下面代码末尾列表中的所有其他参数) - 但我无法控制fontsize.(我真的不希望它们是25,这只是为了测试......)

有什么我想念的,或者这是一个错误?

library(ggplot2)
library(scales)
library(directlabels)
df <- data.frame(x = rnorm(26), y=rnorm(26), let=letters)
p <- ggplot(df, aes(x, y, color=let)) + geom_point() 
direct.label(p, 
    list("top.points", rot=45, fontsize=25, 
        fontface="bold", fontfamily="serif", alpha=0.5))
Run Code Online (Sandbox Code Playgroud)

r font-size ggplot2

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

在 ggplot2 geom_text 中以颜色渲染 unicode 表情符号

我有包含表情符号的 unicode 文本。我想用 geom_text 或 geom_label 以包含表情符号颜色的方式将它们渲染在 ggplot2 图形中。我看过了emojifont,这些emo似乎ggtext都不允许这样做。当然,问题是文本的颜色geom_text受颜色审美的影响。有什么方法可以通过 geom_text 或其他解决方法在文本中呈现颜色?

可重现的例子:

library(ggplot2)

pets <- "I like    "

cat(pets)

ggplot() +
  theme_void() +
  annotate("text", x = 1, y = 1, label = pets, size = 15)
Run Code Online (Sandbox Code Playgroud)

RStudio 的屏幕上可以正常工作cat(pets),但最后一行绘制的图形如下所示:

在此输入图像描述

或者,ggtext::geom_richtext()我得到类似的黑白结果和此错误消息:

> library(ggtext)
> ggplot() +
+   theme_void() +
+   annotate("richtext", x = 1, y = 1, label = pets, size = 15)
Warning messages:
1: In text_info(label, fontkey, fontfamily, …
Run Code Online (Sandbox Code Playgroud)

fonts r ggplot2 ggtext

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

在R中找到最匹配的重叠多边形

我有两个shapefile,我使用readOGR()作为SpatialPolygonsDataFrame对象读入R. 两者都是新西兰的地图,内部边界不同.一个人有大约70个多边形代表领土权限边界; 另一个约有1900个代表区域单位.

我的目标 - 一个更大的项目的烦人基本部分 - 是使用这些地图生成一个参考表,可以查找一个区域单位并返回它主要在哪个领土权威.我可以使用over()来查找哪个多边形重叠,但在许多情况下,区域单位似乎,至少在很小的范围内,在多个领土当局内 - 即使查看个别案例表明通常90%以上的区域单位属于单一的地域当局.

是否有一个准备好的手段来做over()所做的但是它不仅可以识别(或不是)所有重叠的多边形,而是几个重叠的多边形中的哪一个在每种情况下最重叠?

gis maps r polygons

5
推荐指数
2
解决办法
1910
查看次数

乳胶(描述(...))是否在MiKTeX的编织下工作?

当我创建一个文件describe.Rnw如下:

\documentclass{article}

\begin{document}

<<results='asis'>>=
require(Hmisc)
latex(describe(cars), file="")
@


\end{document}
Run Code Online (Sandbox Code Playgroud)

并尝试用它编译它

library(knitr)
knit2pdf("describe.Rnw")
Run Code Online (Sandbox Code Playgroud)

我收到错误消息,提示乳胶(describe())组合创建的乳胶有语法错误:

LaTeX errors:
P:/r/ellisp/test/describe.tex:65: LaTeX Error: Environment spacing undefined.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help
Your command was ignored.
P:/r/ellisp/test/describe.tex:131: LaTeX Error: \begin{document} ended by \end{
spacing}.

See the LaTeX manual or LaTeX Companion for explanation.
Run Code Online (Sandbox Code Playgroud)

我可以看到它生成的胶乳,粘贴在下面 - 可能是因为线间距混淆解析的错误?我的整个设置是新的(实际上是在测试模式下),虽然我已经成功编译了文档,但我还是knitr的新手,但我不知道我的设置是否也有问题.我的第一个问题是,我做错了什么或这是一个更普遍的问题?

> latex(describe(cars), file="")
\begin{spacing}{0.7}
\begin{center}\textbf{ cars \\ 2 Variables~~~~~ 50 ~Observations}\end{center}
\smallskip\hrule\smallskip{\small
\vbox{\noindent\textbf{speed}

{\smaller
\begin{tabular}{ rrrrrrrrrrr }
n&missing&unique&Mean&.05&.10&.25&.50&.75&.90&.95 \\
50&0&19&15.4& …
Run Code Online (Sandbox Code Playgroud)

latex miktex knitr hmisc

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

如何在H2O中将数据从长格式转换为宽格式?

我有一个标准化,整洁的"长"数据结构中的数据,我想上传到H2O,如果可能的话,在一台机器上进行分析(或者有一个明确的发现,我需要比现有更多的硬件和软件).数据很大但不是很大; 当它被投入稀疏矩阵(绝大多数单元为零)时,可能有7千万行3列的有效归一化形式,300k乘80k.

H2O中的分析工具需要采用后者,宽泛的格式.部分总体动机是看到各种硬件设置的限制在哪里分析这些数据,但目前我正在努力将数据放入H2O集群(在R可以将其全部保存在RAM中的机器上)因此无法对分析的大小限制做出判断.

试验数据如下所示,其中三列是"documentID","wordID"和"count": 1 61 2 1 76 1 1 89 1 1 211 1 1 296 1 1 335 1 1 404 1

这并不重要 - 因为这对我来说甚至不是真实的数据集,只是一个测试集 - 这个测试数据来自https://archive.ics.uci.edu/ml/machine-learning-databases/bag- of-words/docword.nytimes.txt.gz(谨慎,大下载).

为了进行分析,我需要在矩阵中为每个documentID创建一行,每个wordID都有一列,单元格是计数(该文档中该单词的数量).在R(例如)中,这可以使用tidyr::spread或(在这种特殊情况下由创建的密集数据帧spread太大)完成tidytext::cast_sparse,只要我很高兴数据保持在这个大小的数据R.

现在,最新版本的H2O(可从h2o.ai获得但尚未在CRAN上)具有as.h2o可理解稀疏矩阵的R函数,这适用于较小但仍然非平凡的数据(例如,在3500行的测试用例中x当密集版本需要22秒时,它会在3秒内导入7000列稀疏矩阵,但是当它获得我的300,000 x 80,000稀疏矩阵时,它会崩溃并显示以下错误消息:

asMethod(object)出错:文件中的Cholmod错误'问题太大'../Core/cholmod_dense.c,第105行

据我所知,前进有两种方法:

  1. 将一个长而整齐,有效的数据形式上传到H2O中,并在H2O中进行重塑"传播"操作.
  2. 以R(或任何其他语言)进行数据整形,以稀疏格式将生成的稀疏矩阵保存到磁盘,然后从那里上传到H2O

据我所知,H2O不具备的功能做#1,即相当于tidytext::cast_sparsetidyr::spread它在R. 数据改写(munging)功能,看起来是非常有限的.但也许我错过了什么?所以我的第一个(不是很乐观)的问题是可以(以及如何)H2O从长到宽格式"投射"或"传播"数据?.

选项#2与此旧问题相同,其中接受的答案是以SVMlight格式保存数据.但是,我不清楚如何有效地执行此操作,并且不清楚SVMlight格式对于不打算使用支持向量机建模的数据有意义(例如,数据可能仅用于无监督的学习问题).如果我可以将我的稀疏矩阵保存在MatrixMarket格式中会更方便,这种格式由MatrixR中的包支持,但据我所知,不是H2O.MatrixMarket格式看起来与我原来的长数据非常相似,它基本上是一个空格分隔的文件,看起来像colno rowno cellvalue(带有两行标题).

sparse-matrix reshape tidyr h2o tidytext

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

如何使用 htmlOutput 在 R Shiny 应用程序中启用语法突出显示

我有一个闪亮的应用程序,它可以根据用户输入动态生成计算机代码并将其呈现给用户,以便他们可以准确地看到正在发送到数据库的查询。我有 prism 语法高亮显示,适​​用于直接在用户界面函数中的代码,所以我知道 prism 正在工作;但是对于在服务器中生成并通过发送给用户的代码renderTexthtmlOutput突出显示不起作用。

这是一个简单示例的图像:

在此输入图像描述

这是用这个 R 文件(以及wwwShiny 应用程序文件夹中的 prism.css 和 prism.js)制作的

   ui <- shinyUI(fluidPage(
  tags$head(
    tags$link(rel = "stylesheet", type = "text/css", href = "prism.css")
  ),
  tags$body(
    tags$script(src="prism.js")
  ),
  HTML("<pre><code class='language-sql'>SELECT * FROM mytable WHERE 1=2
       -- this chunk should be syntax highlighted and it is
       </code></pre>"),

  HTML("<pre>SELECT * FROM mytable WHERE 1=2
       -- this chunk should not be syntax highlighted
       </code></pre>"),

  htmlOutput("sql")
)
)


# Define the server code
server <- function(input, …
Run Code Online (Sandbox Code Playgroud)

html javascript syntax-highlighting shiny

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

R中%的优雅版本返回NA?

所以,我对这个R代码的第三行的行为​​感到惊讶:

x <- c(1, 2, 3, 4, NA, 5, 6, 7, 8)
ifelse(x < 4, 1, 0)
ifelse(x %in% 1:3, 1, 0)
Run Code Online (Sandbox Code Playgroud)

它返回的1,1,1,0,0,0,0,0,0不是1,1,1,0,NA,0,0,0,0我认为我会得到的,即与第二行相同.仔细检查帮助文件%in%match显示这是记录的行为,返回:

"一个逻辑向量,指示是否为x的每个元素定位匹配:因此值为TRUE或FALSE且从不NA."

是否有类似的一般功能,%in%除了它会在这种情况下给出NA?例如,这会返回所需的结果:

`%inna%` <- function(x, table){
  y <- match(x, table, nomatch = 0) > 0
  y[is.na(x)] <- NA
  return(y)
}

ifelse(x %inna% 1:3, 1, 0)
Run Code Online (Sandbox Code Playgroud)

但有没有一种常见的方法呢?

r

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

为什么 tidyr:fill 不替换我的 NA 值

tidyr::fill()没有在我的小标题中填写值。这是一个代表:

library(tidyverse)
library(googlesheets4)

url <- "https://docs.google.com/spreadsheets/d/1q5gdePANXci8enuiS4oHUJxcxC13d6bjMRSicakychE/edit#gid=1437767505"

gd_orig <- read_sheet(url) 

gd_orig %>%
  select(State, Date, matches("^Tests")) %>% 
  group_by(State, Date) %>%
  arrange(State, Date) %>%
  fill(`Tests conducted (negative)`,
       `Tests conducted (total)`, .direction = "down") 
Run Code Online (Sandbox Code Playgroud)

这会产生:

# A tibble: 504 x 4
# Groups:   State, Date [455]
   State Date                `Tests conducted (negative)` `Tests conducted (total)`
   <chr> <dttm>                                     <dbl>                     <dbl>
 1 ACT   2020-03-12 00:00:00                           NA                        NA
 2 ACT   2020-03-13 00:00:00                           NA                        NA
 3 ACT   2020-03-14 00:00:00                           NA                        NA
 4 ACT   2020-03-16 00:00:00                           NA                        NA
 5 …
Run Code Online (Sandbox Code Playgroud)

r tidyr tidyverse

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

ggplot条形图中的中心文本图层

我有一些带有一些文字的直方图,我试图将它作为相应类型的中心

df = read.table(text = "
id   year  type amount
                1  1991  HIIT     22
                2  1991 inter    144
                3  1991  VIIT     98
                4  1992  HIIT     20
                5  1992 inter    136
                6  1992  VIIT    108
                7  1993  HIIT     20
                8  1993 inter    120
                9  1993  VIIT    124
                10 1994  HIIT     26
                11 1994 inter    118
                12 1994  VIIT    120
                13 1995  HIIT     23
                14 1995 inter    101
                15 1995  VIIT    140
                16 1996  HIIT     27
                17 1996 inter    103
                18 1996 …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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