小编Mor*_*arz的帖子

RStudio - Markdown 崩溃:(函数(srcref)中的错误:'eval' 中的未实现类型(29)

我的 RStudio 因以下错误多次崩溃:

Error in (function (srcref) : unimplemented type (29) in 'eval'

发生这种情况的相似之处是:

  • 我在 Markdown Notebook 中工作
  • 我相信它总是在我选择“运行上面的所有块”命令时
  • 我之前在当前会话中运行了一些代码块(所以它不是在开始工作时)

该错误总是在 RStudio 会话中止之前显示。我丢失了环境中的所有数据和变量,但大部分代码似乎可以恢复。

任何人都知道什么可能导致这种情况或如何处理它?

这里我的 SessionInfo

R version 4.0.0 (2020-04-24)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)

Matrix products: default

locale:
[1] LC_COLLATE=English_United Kingdom.1252  LC_CTYPE=English_United Kingdom.1252    LC_MONETARY=English_United Kingdom.1252
[4] LC_NUMERIC=C                            LC_TIME=English_United Kingdom.1252    

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

other attached packages:
 [1] data.table_1.12.8 forcats_0.5.0     stringr_1.4.0     dplyr_0.8.5       purrr_0.3.4       readr_1.3.1      
 [7] tidyr_1.0.2       tibble_3.0.0      ggplot2_3.3.0 …
Run Code Online (Sandbox Code Playgroud)

r rstudio r-markdown

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

Github 操作失败:安装 R-CMD-Check 的系统依赖项时进程已完成,退出代码为 1

我正在尝试use_github_action_check_standard()usethisR 包运行命令,以在 GitHub Actions 上的每次推送中检查我的包。

\n

该测试在 Windows 和 MacOS 上运行没有问题,但对于这两个 Linux 版本,我的工作流程代码甚至在到达包代码之前就失败了。

\n

当它尝试安装系统依赖项时失败,它给了我错误##[error]Process completed with exit code 1

\n

当我查看原始日志(如下)时,我注意到这一行:\n Cache not found for input keys: Linux-287c850eb370edd647ed85b6fac18cbaee02effa7d01b981304dce84a452b22c-1-, Linux--1-.\n但是我担心我不理解该错误。另外,我不认为是这样,因为密钥已经出现在上面的组中(注意 ),##[endgroup]但错误仅出现在下一组中(如屏幕截图所示)。

\n

有任何想法吗?非常感谢!

\n

我还在下面发布了我的整个工作流程代码。

\n

截屏

\n

在此输入图像描述

\n

原始日志

\n
2020-08-12T22:21:55.5243116Z ##[group]Run install.packages(\'remotes\')\n2020-08-12T22:21:55.5243360Z [36;1minstall.packages(\'remotes\')[0m\n2020-08-12T22:21:55.5243487Z [36;1msaveRDS(remotes::dev_package_deps(dependencies = TRUE), "../.github/depends.Rds", version = 2)[0m\n2020-08-12T22:21:55.5243834Z [36;1mwriteLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), "../.github/R-version")[0m\n2020-08-12T22:21:55.5250702Z shell: /usr/local/bin/Rscript {0}\n2020-08-12T22:21:55.5251247Z env:\n2020-08-12T22:21:55.5251370Z   R_REMOTES_NO_ERRORS_FROM_WARNINGS: true\n2020-08-12T22:21:55.5251571Z   RSPM: https://packagemanager.rstudio.com/cran/__linux__/focal/latest\n2020-08-12T22:21:55.5251726Z   R_LIBS_USER: /home/runner/work/_temp/Library\n2020-08-12T22:21:55.5251838Z   TZ: UTC\n2020-08-12T22:21:55.5251944Z   NOT_CRAN: …
Run Code Online (Sandbox Code Playgroud)

linux r github github-actions r-usethis

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

ggplot Guide_legend 参数将连续图例更改为离散图例

使用该guide_legend参数,即使没有指定任何进一步的参数,也会将我的图例从连续图例更改为离散图例。我需要纠正这个问题(例如,要使用这个:将 NA 值的框添加到连续地图的 ggplot 图例中,然后对图例进行排序。)

df <- expand.grid(X1 = 1:10, X2 = 1:10)
df$value <- df$X1 * df$X2

ggplot(df, aes(X1, X2)) + 
  geom_tile(aes(fill = value))
Run Code Online (Sandbox Code Playgroud)

右侧图例是连续的

ggplot(df, aes(X1, X2)) + 
  geom_tile(aes(fill = value))+
  scale_fill_continuous(guide = guide_legend())
Run Code Online (Sandbox Code Playgroud)

现在的传说是离散的

如果我在将其添加为参数时指定参数,也会发生同样的情况+ guides(fill = guide_legend())

任何想法如何确保图例保持不变,以便我可以使用例如参数order

谢谢!

r ggplot2

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

RMarkdown:将代码包装成块,但在管道之后保留中断

我正在尝试实现两件可能不兼容的事情:当我创建 PDF 时,我希望将 RMarkdown 块中的代码包裹在每一行中(换句话说,下面的行在页面上运行)边缘)。

在此输入图像描述

在阅读了一些内容之后(包括这里并简要尝试了该styler,我发现使用tidy=TRUEtidy.opts = list(width.cutoff=60)工作(见下文)

knitr::opts_chunk$set(tidy.opts=list(width.cutoff=60),tidy=TRUE)
Run Code Online (Sandbox Code Playgroud)

注意:您可能需要formatR安装。

在此输入图像描述

但遗憾的是,这破坏了代码的格式,管道%>%保留了管道的格式并让代码在页面外运行。

有没有办法正确地做到这一点?这样文本就可以保留在页面上,结构也可以保持一定的位置吗?

感谢您的帮助!

返工:

两者的标题:

---
title: "R Notebook"
output: pdf_document
---
Run Code Online (Sandbox Code Playgroud)

选择第二个图像的块

knitr::opts_chunk$set(tidy.opts=list(width.cutoff=60),tidy=TRUE)
Run Code Online (Sandbox Code Playgroud)

两者的示例代码:

data(mtcars)
library(tidyverse)
variable_1 <- 10
variable_2 <- 50
variable_3 <- 30
variable_4 <- 5
variable_5 <- 100
variable_6 <- 25
variable_7 <- 600
mtcars %>% 
  mutate(mpg = ifelse(mpg>18,
                   yes = (variable_1*variable_2)*variable_3 + variable_4 + variable_5 + variable_6 + variable_7,
                   no = mpg)) …
Run Code Online (Sandbox Code Playgroud)

r r-markdown dplyr magrittr

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

R testthat GitHub Actions 快照

我正在使用 GitHub Actions 进行 R CMD 检查(请参阅https://github.com/r-lib/actions)。

我想snapshot_filetestthat这种脚本中使用:

save_png <- function(code, width = 1000, height = 600) {
  path <- tempfile(fileext = ".png")
  grDevices::png(path, width = width, height = height)
  on.exit(dev.off())
  code
  
  path
}

set.seed(123)
df <- data.frame(y=rnorm(20),x=rnorm(20))

test_that("graphs are correct", {
  expect_snapshot_file(path = save_png(plot(df$y,df$x)), name = "plot1.png")
}
Run Code Online (Sandbox Code Playgroud)

目前,错误将始终是: Adding new file snapshot "_snaps/gets-test1-example/plot1.png"。或者,如果我上传在我的笔记本电脑上生成的绘图,我会收到一个错误,它们是不同的(非常轻微)......

因为我知道快照测试很脆弱,所以我想到了两个选择:

  • 删除在我的笔记本电脑上生成的 _snaps 文件夹中的所有快照文件,然后使用某种形式的 upload-artefact ( https://github.com/actions/upload-artifact ) 第一次上传快照 - 然后GitHub actions 有由同一台机器生成的东西来测试它(我在想类似每个操作系统的专用存储位置,其中现有文件首先加载到工作流机器然后检查)
  • 跳过 GitHub Actions 上的所有 snapshot_files(使用 …

r testthat github-actions

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

dplyr:在 mutate_at 函数中访问列名

我想通过从其中减去名称几乎相同的另一列来更正 data.frame 中的一列,但另一列有后缀。我想为此使用该mutate_at功能。

试图弄清楚这一点,我一直在努力访问 mutate_at 的函数部分中的列名,以使用它来访问另一列。

我在下面的一个小例子中展示了这一点,但基本上我想访问当前使用的列的名称,.然后从管道中的数据中选择一个与名称相同.但带有后缀的列(在下面将是"_new")。

谢谢你的帮助!

这是我希望如何做的一个例子 - 但这不起作用。

library(tidyverse)
data("mtcars")
new <- mtcars/4
names(new) <-paste0(names(new),"_new")

df <- bind_cols(mtcars,new)

df %>% 
  mutate_at(.vars = vars(carb,disp),
            .funs = list(corrected = ~ . - df %>% pull(paste0(names(.),"_new"))))

df %>% pull(paste0("carb","_new"))

Run Code Online (Sandbox Code Playgroud)

r dplyr

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

R 包到 CRAN:CPU 时间是经过时间的 5 倍

只是针对将包提交到 CRAN 时出现的问题提供我的解决方案,并收到类似于以下内容的错误:

\n
* checking tests ... [838s/167s] NOTE\n  Running \xe2\x80\x98testthat.R\xe2\x80\x99 [838s/167s]\nRunning R code in \xe2\x80\x98testthat.R\xe2\x80\x99 had CPU time 5 times elapsed time\n
Run Code Online (Sandbox Code Playgroud)\n

现在我无法复制这个错误(在本地,在 win-hub 或 rhub 上)并且发现关于此的信息很少。

\n

r cran r-package

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

ggplot 在使用“facet_wrap”时添加正态分布

我正在绘制以下直方图:

library(palmerpenguins)
library(tidyverse)

penguins %>% 
  ggplot(aes(x=bill_length_mm, fill = species)) +
  geom_histogram() + 
  facet_wrap(~species)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

对于每个直方图,我想为每个直方图添加一个正态分布,其中包含每个物种的平均值和标准差。

当然,我知道我可以在开始命令之前计算组特定的均值和 SD ggplot,但我想知道是否有更智能/更快的方法来做到这一点。

我努力了:

penguins %>% 
  ggplot(aes(x=bill_length_mm, fill = species)) +
  geom_histogram() + 
  facet_wrap(~species) + 
  stat_function(fun = dnorm)
Run Code Online (Sandbox Code Playgroud)

但这只在底部给了我一条细线:

在此输入图像描述

有任何想法吗?谢谢!

编辑 我想我想要重新创建的是来自Stata的这个简单命令:

hist bill_length_mm, by(species) normal

这给了我这个: 在此输入图像描述

我知道这里有一些建议:using stat_function and facet_wrap Together in ggplot2 in R

但我专门寻找一个简短的答案,不需要我创建单独的函数。

r ggplot2

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

使用 CDO 计算 ERA5 每日总降水量

本质上,这是这个问题的转帖:https ://confluence.ecmwf.int/pages/viewpage.action?pageId =149341027

我已经从 CDS 下载了 ERA5。对于从每个考虑年份的 1 月 1 日到 12 月 31 日的每个日历日,输入文件具有 24 小时步长(0、1、2、3、4、...、23)。

ECMWF 在此声明https://confluence.ecmwf.int/display/CKB/ERA5%3A+How+to+calculate+daily+total+precipitation必须通过累加 1979 年 1 月 1 日的降水来计算每日总降水量1 月 1 日的第 1、2、...、23 步和 1 月 2 日的第 0 步。这意味着 1979 年 1 月 1 日的第 0 步不包括在当天的总降水量计算中。为了计算 1979 年 1 月 2 日的总降水量,我们还使用当天的步骤 1、2、3、...、23 加上 1 月 3 日的步骤 0,依此类推。

在 python 中似乎有一个选项可以这样做:

import xarray as xr                                                    # import xarray library
ds_nc = xr.open_dataset('name_of_your_file.nc')                        # read the file
daily_precipitation = …
Run Code Online (Sandbox Code Playgroud)

python weather netcdf cdo-climate era5

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

在代码块中使用 Markdown 来定义大型函数

我想在一个大型项目中使用 R Markdown。该项目使用了许多非常大的自定义函数。因此,我想使用 Markdown 来评论该功能的某些部分。

```{r}
my_function <- function(x,y){
  test <- x + seq(1,10)
```
Run Code Online (Sandbox Code Playgroud)

然后我想用Markdown来描述函数的第二部分

```{r}
  output <- test + y
  return(output)
}
```
Run Code Online (Sandbox Code Playgroud)

然后我想应用该功能

```{r}
my_function(1,2)
```
Run Code Online (Sandbox Code Playgroud)

当然我意识到我可以简单地使用 # 符号来添加注释,但这不如 markdown 好。这是相关的,例如大型闪亮的服务器功能或类似的东西。任何想法我怎么能做到这一点?

r r-markdown shiny

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