小编Pav*_*ive的帖子

DiagrammeR美人鱼:rmarkdown ioslides的结果不一致

我有一个rmarkdown演示文稿(ioslides)有3张幻灯片,流程图在DiagrammeR美人鱼中工作.保存为.Rmd的以下文件可以重现该示例(至少在我的机器中,希望您也是如此):

---
title: "Untitled"
author: "author"
date: "28 de enero de 2018"
output: ioslides_presentation
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)

require(DiagrammeR)
```

## DiagrammeR's mermaid

It's not producing consistent results in slides when using line breaks.

```{r flow}
mermaid("
  graph LR
    C(CLIENTES <br>Clients) --> D[Doctors]
    U(USUARIOS <br>Users <br>Patients <br>Nurses) --> D
    D --> S(SALIDAS <br>Medicines <br>Surgery)
    style C fill: #f5f5dc
    style D fill: #4682b4
    style U fill: #ffe4c4
")
```

## Second attempt

```{r flow2}
mermaid("
  graph …
Run Code Online (Sandbox Code Playgroud)

r r-markdown mermaid diagrammer ioslides

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

R:为什么kable不能在for循环中打印?

我正在用rmarkdown和latex工作.我需要使用打印一组表knitr::kable,但是在for循环中不打印.

这是我的代码:

---
title: "project title"
author: "Mr. Author"
date: "2016-08-30"
output: 
  pdf_document: 
    latex_engine: xelatex
bibliography: biblio.bib
header-includes:
   - \usepackage{tcolorbox}
---

Text and chunks that run ok.

```{r loadLibraries}
require(data.table)
require(knitr)
```

## Try to print a group of tables from split

```{r results = "asis"}
t1 <- data.table(a = sample(letters, 10, T), b = sample(LETTERS[1:3], 10, T))
t2 <- split(t1, t1$b)

for (i in 1:length(t2)){
    kable(t2[[i]], col.names = c("A", "B"))
}
```
Run Code Online (Sandbox Code Playgroud)

如果我使用results = "asis"或者如果我完全省略它没关系,则 …

latex r knitr

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

R cor有时会返回NaN

我一直在研究一些数据,这里有:Dropbox的csv文件(请善用它来复制错误).

当我运行代码时:

t<-read.csv("120.csv")
x<-NULL
for (i in 1:100){
  x<-c(x,cor(t$nitrate,t$sulfate,use="na.or.complete"))
}
sum(is.nan(x))
Run Code Online (Sandbox Code Playgroud)

我得到最后一个表达式的随机值,通常在55到60左右.我希望cor得到可重复的结果,所以我希望x是一个由相同值组成的长度= 100的向量.例如,请参阅两个独立运行的输出:

> x<-NULL; for (i in 1:100){x<-c(x,cor(t$nitrate,t$sulfate,use="na.or.complete"))}
> sum(is.nan(x))
[1] 62
> head(x,10)
 [1]       NaN       NaN 0.2967441       NaN 0.2967441       NaN       NaN       NaN
 [9] 0.2967441       NaN
> x<-NULL; for (i in 1:100){x<-c(x,cor(t$nitrate,t$sulfate,use="na.or.complete"))}
> sum(is.nan(x))
[1] 52
> head(x,10)
 [1] 0.2967441       NaN       NaN       NaN       NaN 0.2967441 0.2967441       NaN
 [9] 0.2967441 0.2967441
> 
Run Code Online (Sandbox Code Playgroud)

我想知道我在这里做错了什么,或者它是否是一个[n] [un]已知错误.如果是这样的话,我很感激,如果有人比我更有帮助我帮助我向CRAN报告.

我读了一篇非常古老的(2001)文章,其中cor.test表现出同样的行为(参见cor.test有时会产生NaN).

我很感激你的解释,因为我是R的nOOb谢谢!

Per Ben的建议:

> sessionInfo()
R version …
Run Code Online (Sandbox Code Playgroud)

r nan correlation

8
推荐指数
2
解决办法
6656
查看次数

R将列类从数据框分配(或复制)到另一个

我制作了一个大型数据框(1700 + obs,159个变量),其功能是从网站收集信息.通常,函数会查找某些列的数值,因此它们是数字的.但是,有时它会找到一些文本,并将整个列转换为文本.我有一个df,其列类是正确的,我想将这些类"粘贴"到一个新的,不正确的df.比方说,例如:

dfCorrect<-data.frame(x=c(1,2,3,4),y=as.factor(c("a","b","c","d")),z=c("bar","foo","dat","dot"),stringsAsFactors = F)
str(dfCorrect)
'data.frame':   4 obs. of  3 variables:
 $ x: num  1 2 3 4
 $ y: Factor w/ 4 levels "a","b","c","d": 1 2 3 4
 $ z: chr  "bar" "foo" "dat" "dot"

## now I have my "wrong" data frame:
dfWrong<-as.data.frame(sapply(dfCorrect,paste,sep=""))
str(dfWrong)
'data.frame':   4 obs. of  3 variables:
 $ x: Factor w/ 4 levels "1","2","3","4": 1 2 3 4
 $ y: Factor w/ 4 levels "a","b","c","d": 1 2 3 4
 $ z: Factor w/ …
Run Code Online (Sandbox Code Playgroud)

copy r class dataframe assign

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

RSelenium错误:NotConnectedException

有些问题类似于在SO (问题1),(问题2)中已经提出过的问题,但没有一个问题得到答案(最后一个问题由@jdharrison指示OP提出问题).这是我的问题:

我曾经有一个非常简单的脚本从网站获取一些信息到R:

startServer()
rd<-remoteDriver(remoteServerAddr="localhost",port=4444,browserName="firefox")
rd$open()
rd$navigate(url) #with a defined url
Run Code Online (Sandbox Code Playgroud)

当我现在尝试运行脚本时,rd$open()它会打开一个firefox窗口(保持空白约30秒),然后关闭并返回错误:

rd$open()
[1] "Connecting to remote server"
Error:   Summary: UnknownError
     Detail: An unknown server-side error occurred while processing the command.
     class: org.openqa.selenium.firefox.NotConnectedException
Run Code Online (Sandbox Code Playgroud)

阅读SO和其他一些网站上的不同帖子,似乎问题是由firefox和RSelenium版本的不兼容引起的.

在GitHub的selenium论坛上,有一个帖子表明将硒从2.44更新到2.45解决了这个问题.但是,如果RSelenium似乎是最新的,我对如何更新硒一无所知:

sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=Spanish_Colombia.1252 
[2] LC_CTYPE=Spanish_Colombia.1252   
[3] LC_MONETARY=Spanish_Colombia.1252
[4] LC_NUMERIC=C                     
[5] LC_TIME=Spanish_Colombia.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods  
[7] base     

other attached packages:
[1] RSelenium_1.3.5 …
Run Code Online (Sandbox Code Playgroud)

r rselenium

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

R lattice xyplot与网格到轴的刻度(不是多重绘图)不匹配

我正在尝试通过以下代码生成带有格子xyplot的图:

set.seed(123) #### make it reproducible
df<-data.frame(x=runif(100,1,1e7),y=runif(100,0.01,.08),t=as.factor(sample(1:3,100,replace=T)))
png("xyplot_grid_misaligned.png",800,800)
p<-xyplot(y ~ x,groups=t,data=df,scales=list(x=list(log=10,equispaced.log=F)),auto.key=T,ylim=c(-.01,.1),grid=T)
print(p)
dev.off()
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,它产生了一个美丽的情节: xyplot与网格未对齐

我希望绘图上的网格与生成的刻度线对齐equispaced.log=F.xyplot的文档只讨论grid关于多条曲线,因为这样做在SO和其他网站的一些其他线程(事实上,我得到了grid=T来自另一个站点argumment:R中使用点阵图形,甚至那里你可以看到,当equispaced.log=F使用,网格与标记"错位".

为了防止有人认为这是SO的重复:对齐 - 网格 - 线 - 轴 - 刻度 - 格 - 图形,请注意那里的问题是如何在多个图形中对齐网格(和,当时,线程还没有回答).

在使用时,如何将xyplot"对齐"网格线与x刻度equispaced.log=F?谢谢!

plot logarithm r lattice r-grid

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

在 Replace() 表达式中添加换行符

我正在尝试使用回归模型中的相关数据来注释 ggplot 中的图。我遵循了这篇 SO 帖子中的建议,并尝试修改该函数,以便在图中的换行符中添加几个附加项目。这是我对新功能的尝试:

lm_eqn = function(m){
  eq <- substitute(italic(y) == a %.% italic(x)^b*","~~italic(r)^2~"="~r2*","~~italic(n)~"="~nn*","~~italic(p-value)~"="~pv, 
                   list(a = format(exp(coef(m)[1]), digits = 3), 
                        b = format(coef(m)[2], digits = 3), 
                        r2 = format(summary(m)$r.squared, digits = 3),
                        nn=format(summary(m)$df[2]),
                        pv=format(summary(m)$coefficients[,4][2])))
  as.character(as.expression(eq));                 
}
Run Code Online (Sandbox Code Playgroud)

它产生预期的输出:全部在一行中。但我想将文本分成两行,第二行以italic(n)=. 但是如果我引入 a \n,它在找到时会抛出错误\n。如果我在引号内引入 \n:"\n"那么它似乎会被忽略并且文本保留在一行中。我还没有找到任何关于如何在这样的表达式中引入换行符的参考。我们将非常感谢您的帮助。

谢谢。

编辑:根据@Tim 的评论,我提出了重写的代码和调整的问题。

expression newline r substitution

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

将data.table链分成两行代码以便于阅读

我正在研究一个Rmarkdown文档,并被告知要严格限制最大列数(边距列)为100.在文档的代码块中,我使用了许多不同的包,其中包括data.table.

为了符合限制,我可以拆分链(甚至长命令),如:

p <- ggplot(foo,aes(bar,foo2))+
       geom_line()+
       stat_smooth()
bar <- sum(long_variable_name_here,
         na.rm=TRUE)
foo <- bar %>% 
         group_by(var) %>%
         summarize(var2=sum(foo2))
Run Code Online (Sandbox Code Playgroud)

但我不能拆分data.table链,因为它会产生错误.我怎样才能实现这样的目标?

bar <- foo[,.(long_name_here=sum(foo2)),by=var]
           [order(-long_name_here)]
Run Code Online (Sandbox Code Playgroud)

当然,最后一行会导致错误.谢谢!

code-formatting r data.table

5
推荐指数
3
解决办法
2332
查看次数

data.table 中的“递归”自联接

我有一个由 3 列组成的组件列表:产品、组件和使用的组件数量:

a <- structure(list(prodName = c("prod1", "prod1", "prod2", "prod3", 
"prod3", "int1", "int1", "int2", "int2"), component = c("a", 
"int1", "b", "b", "int2", "a", "b", "int1", "d"), qty = c(1L, 
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L)), row.names = c(NA, -9L), class = c("data.table", 
"data.frame"))
Run Code Online (Sandbox Code Playgroud)
  prodName component qty
1    prod1         a   1
2    prod1      int1   2
3    prod2         b   3
4    prod3         b   4
5    prod3      int2   5
6     int1         a   6
7     int1         b   7
8     int2      int1 …
Run Code Online (Sandbox Code Playgroud)

recursion join r self-join data.table

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

在 grid.arrange 的左上角找到标题

我有两个与gridExtra::grid.arrange. 我可以用top参数在它们上面加上一个标题。问题是,我被要求在情节的左上角找到标题。

一个可重现的例子:

library(ggplot2)
library(gridExtra)

p1 <- qplot(1:20)
p2 <- qplot(30, 35)
grid.arrange(p1, p2, nrow = 1, top = "Title")
Run Code Online (Sandbox Code Playgroud)

产生

在此处输入图片说明

但我需要的是:

在此处输入图片说明

我读了好几次?arrangeGrob文件(我认为这是我的答案),但还没有想出如何实现它。

r gridextra grob

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