小编Dan*_*son的帖子

重置函数中的par()

在R中编写绘图函数时,我不想修改全局环境,所以我包含了类似的东西

op <- par()
on.exit(par(op))
Run Code Online (Sandbox Code Playgroud)

但这并不令人满意,因为它会发出警告信息(例如"In par(op) : graphical parameter "cin" cannot be set"),但更重要的是,它与多面板图不兼容.例如,如果我有一个像这样的简单函数

pfun <- function(x) {
    op <- par()
    on.exit(par(op))

    par(bg = "gray21", col = "deeppink", col.axis = "deeppink")
    plot(x, 
        xaxt = "n",
        yaxt = "n",
        col = "deeppink", 
        cex = 2, 
        pch = 22, 
        bg = "deeppink",
        col.lab = "deeppink")
    axis(1, col = "deeppink")
    axis(2, col = "deeppink")
}
Run Code Online (Sandbox Code Playgroud)

它可以很好地用于单个绘图(除了警告之外),但是与多面板图不兼容,例如

par(mfrow = c(2, 2))
pfun(1:10)
pfun(10:1) # overwrites the first plot rather than plotting in …
Run Code Online (Sandbox Code Playgroud)

plot r

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

xaringan:更改特定块的代码背景

在2016 年的这个功能请求中,Yihui显示,在底部,如何让不同的代码块在R Markdown中具有不同的背景.我在这里附上了这个截图.有没有办法用xaringan做到这一点?

RMD解决方案

我找到了这个答案,它适用于更改所有代码块的背景颜色,但我无法弄清楚如何修改css以便我可以更改几个特定块的背景.

这里的目标是让大多数块正常显示,但有一些显示红色背景或类似表示"这很糟糕".任何帮助,将不胜感激.

r r-markdown xaringan

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

将默认参数设置为"..."

我有一个函数我要传递...plot,所以用户可以添加其他参数.对于其中一些可选参数,我想设置默认值,而不将它们声明为函数中的形式参数.这是一个简单的例子

simpleFun <- function(a, b,...) {
    args <- as.list(match.call())
    if(is.null(args$xlim)) args$xlim <- quote(c(-6, 6))

    plot(a, b, xlim = eval(args$xlim))
}
Run Code Online (Sandbox Code Playgroud)

然后我可以运行simpleFun(rnorm(10), rnorm(10), xlim = c(-1, 1))simpleFun(rnorm(10), rnorm(10))xlimc(-1, 1)在第一实施例(通过用户定义的)和c(-6, 6)在第二个(不是由用户定义).当然,问题...是现在无处可去.我想更明确地指出它

simpleFun2 <- function(a, b,...) {
    args <- as.list(match.call())
    if(is.null(args$xlim)) args$xlim <- quote(c(-6, 6))

    plot(a, b, xlim = eval(args$xlim), ...)
}
Run Code Online (Sandbox Code Playgroud)

所以任何额外的参数都可以传递给plot,但是然后调用simpleFun(rnorm(10), rnorm(10), xlim = c(-1, 1))将无法工作,因为将xlim提供两个参数plot.

所以,基本上,我想知道是否有办法为传递的任何参数设置默认值 …

r

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

在ggforce :: geom_parallel_sets上排列y轴

使用ggforce软件包的开发版,我可以如下创建Sankey图(来自文档)

data <- reshape2::melt(Titanic)
data <- gather_set_data(data, 1:4)

ggplot(data, aes(x, id = id, split = y, value = value)) +
  geom_parallel_sets(aes(fill = Sex), alpha = 0.3, axis.width = 0.1) +
  geom_parallel_sets_axes(axis.width = 0.1) +
  geom_parallel_sets_labels(colour = 'white')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我正在努力使y轴变量以默认方式以外的任何其他方式排序,默认方式似乎是反向字母。例如,更改图,使其显示在图Adult的顶部附近,Child下方。

我尝试过在应用之前重新调整因子gather_set_data,以及y在应用之后重新调整变量gather_set_data,但似乎都不起作用。我也尝试过将它们定义为字符并以不同顺序排序,但这似乎也不起作用。

任何帮助,将不胜感激。

r ggplot2 ggforce

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

huxtable表的单元格内的换行符

我最近开始对表使用huxtable R包,这让我印象深刻。但是,我似乎无法弄清楚的一件事是如何单元格中获得换行符。这是我尝试过的

library(tidyverse)
library(huxtable)
cars <- mtcars %>% 
  mutate(car = rownames(.),
         car = str_replace(car, " ", "\n")) %>% 
  slice(1:5) %>% 
  select(car, cyl, hp)

cars

# A tibble: 5 x 3
  car                    cyl    hp
  <chr>                <dbl> <dbl>
1 "Mazda\nRX4"          6.00 110  
2 "Mazda\nRX4 Wag"      6.00 110  
3 "Datsun\n710"         4.00  93.0
4 "Hornet\n4 Drive"     6.00 110  
5 "Hornet\nSportabout"  8.00 175 

ht <- as_hux(cars, add_colnames = TRUE)
escape_contents(ht) <- TRUE
ht
Run Code Online (Sandbox Code Playgroud)

但这最终没有换行,如下面的屏幕截图所示

在此处输入图片说明

escape_contents部分似乎没有什么不同。

我不确定自己想要的东西是否可行,但是我知道它在其他软件包中(例如DT::datatable)。如果可能的话,我真的很想使用huxtable,因为我喜欢软件包的设计和灵活性。

任何想法都会很棒。

编辑: …

r r-markdown

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

标签 统计

r ×5

r-markdown ×2

ggforce ×1

ggplot2 ×1

plot ×1

xaringan ×1