小编bsc*_*idr的帖子

在dplyr mutate_at调用中使用多个列的函数

我想使用dplyr mutate_at函数将函数应用于数据框中的多个列,其中函数输入直接应用的列以及数据帧中的另一列.

作为一个具体的例子,我想改变以下数据帧

# Example input dataframe
df <- data.frame(
    x = c(TRUE, TRUE, FALSE),
    y = c("Hello", "Hola", "Ciao"),
    z = c("World", "ao", "HaOlam")
)
Run Code Online (Sandbox Code Playgroud)

mutate_at调用类似于此

df %>%
mutate_at(.vars = vars(y, z),
          .funs = ifelse(x, ., NA))
Run Code Online (Sandbox Code Playgroud)

返回一个看起来像这样的数据框

# Desired output dataframe
df2 <- data.frame(x = c(TRUE, TRUE, FALSE),
                  y_1 = c("Hello", "Hola", NA),
                  z_1 = c("World", "ao", NA))
Run Code Online (Sandbox Code Playgroud)

所需的mutate_at呼叫类似于以下呼叫mutate:

df %>%
   mutate(y_1 = ifelse(x, y, NA),
          z_1 = ifelse(x, z, NA)) …
Run Code Online (Sandbox Code Playgroud)

r dplyr

47
推荐指数
2
解决办法
4万
查看次数

dplyr filter(),带有类似SQL的%wildcard%

假设我有以下内容:

foo <- data.frame(Company = c("company1", "foo", "test", "food"), Metric = rnorm(4, 10))

> foo
   Company    Metric
1 company1 10.539970
2      foo  9.487823
3     test  9.663994
4     food  9.499327
Run Code Online (Sandbox Code Playgroud)

为什么dplyr::filter返回0结果?(而不是第2和第4行)我正在尝试在特定的输入字符串上使用SQL等效的通配符过滤器%like%.

我究竟做错了什么?

r dplyr

10
推荐指数
3
解决办法
3万
查看次数

在YAML中使用R代码或Windows用户变量("%userprofile%")?

在我的yaml电话中,我有

---
title: "`r paste0('Test. Done ', format(Sys.Date(), '%B-%Y'))`"
output:
  word_document:
    fig_caption: yes
    fig_height: 4
    fig_width: 7
    reference_docx: %userprofile%\Documents\template.docx
---
Run Code Online (Sandbox Code Playgroud)

但YAML抱怨%userprofile%.是否可以包含这样的变量?

我试过例如

reference_docx: "`r file.path(path.expand('~'), 'skabelon.docx')`"
Run Code Online (Sandbox Code Playgroud)

但这仍然会导致YAML错误.

pandoc.exe: `r file.path(path.expand('~'), 'skabelon.docx')`: openBinaryFile: does not exist (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

我想这可能是在yaml之前没有处理r表达式吗?我已经检查过该文件是否存在...或者是因为pandoc正在使用另一个'userprofile'?我怎么检查这个?

然而Title,根据上面更新的标题,我可以在变量中使用这样的调用.我想这一定是特定的针织问题.

yaml r user-profile knitr r-markdown

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

RMarkdown Word文档中,如何让目录稍后出现

当 RMarkdown 文档与 Word 结合时,目录(如果有的话)始终出现在文档的开头。例如,如果我想让目录出现在文档的第二页上,我该怎么做?

如果我要编写 HTML,我可以使用此方法,但它似乎不适用于 Word。这意味着,我创建了一个要在reference_docxYAML 参数中使用的 Word 模板,并将目录放在该模板的底部,但是当我编写报告时,目录出现在文档的前面。

最好,我想使用依赖于 VBA/VBS 而是仅使用 RMarkdown 和(如果需要)reference_docx文件的解决方案。

r knitr r-markdown

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

如何从嵌套列表中提取每个ggplot2图

制作大型嵌套列表以跟踪使用创建的图通常很方便ggplot2

例如,这是我如何在大量的图列表中存储少量图,以及主题和子主题的子列表。

summary_plots

  1. $Demographics
    • Demographics$Socioeconomic$Household_Income_Plot
    • Demographics$Socioeconomic$Education_Plot
    • Demographics$Age_Plot
  2. $Product_Usage
    • Purchase_Frequency_Plot
    • ....

如何ggplot2从整个列表中提取所有绘图对象?我希望能够创建一个“平面”的单层列表,其中包含原始列表中包含的所有图。


这是一个简单的示例列表:

generic_plot <- ggplot(mtcars) + geom_point(aes(x = wt, y = mpg)) 

summary_plots <- list() 
summary_plots$Demographics$Socioeconomic$Income <- generic_plot 
summary_plots$Demographics$Socioeconomic$Education <- generic_plot 
summary_plots$Demographics$Age <- generic_plot 
summary_plots$Product_Usage$Purchase_Frequency <- generic_plot
Run Code Online (Sandbox Code Playgroud)

所需的结果将等同于创建一个如下所示的列表:

list('Demographics.Socioeconomic.Income' = generic_plot,
     'Demographics.Socioeconomic.Education' = generic_plot,
     ...)
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

如何改变 dplyr 中的 for 循环

我想为数据框中的列创建多个值范围的滞后变量。我的代码可以成功执行我想要的操作,但无法根据我的需要进行扩展(数百次迭代)

我的下面的代码成功地完成了我想要的操作,但无法根据我的需要进行扩展(数百次迭代)

Lake_Lag <- Lake_Champlain_long.term_monitoring_1992_2016 %>% 
group_by(StationID,Test) %>% 
   arrange(StationID,Test,VisitDate) %>% 
   mutate(lag.Result1 = dplyr::lag(Result, n = 1, default = NA))%>% 
   mutate(lag.Result5 = dplyr::lag(Result, n = 5, default = NA))%>% 
   mutate(lag.Result10 = dplyr::lag(Result, n = 10, default = NA))%>% 
   mutate(lag.Result15 = dplyr::lag(Result, n = 15, default = NA))%>% 
   mutate(lag.Result20 = dplyr::lag(Result, n = 20, default = NA))
Run Code Online (Sandbox Code Playgroud)

我希望能够使用列表 c(1,5,10,15,20) 或范围 1:150 为我的数据框创建滞后变量。

r dplyr

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

如何从 R 运行 VBS 脚本,同时将参数从 R 传递到 VBS

假设我想从 R 运行一个 VBS 脚本,并且想将一个值从 R 传递到该脚本。

例如,在一个名为“Msg_Script.vbs”的简单文件中,我有以下代码:

Dim Msg_Text

Msg_Text = "[Insert Text Here]"

MsgBox("Hello " & Msg_Text)
Run Code Online (Sandbox Code Playgroud)

如何使用 R 运行此脚本,同时在 R 中编辑参数和/或变量?例如,在上面的脚本中,我将如何编辑Msg_Text变量的值?

vbscript r

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

使用 unnest_tokens() 对句子进行标记,忽略缩写

我正在使用优秀的tidytext包来标记几个段落中的句子。例如,我想摘录以下一段:

“我完全相信达西先生没有缺陷。他自己毫不掩饰地拥有它。”

并将其标记为两个句子

  1. “我完全相信达西先生没有缺陷。”
  2. “他毫不掩饰地拥有它。”

但是,当我使用默认句子标记器时,tidytext我得到三个句子。

代码

df <- data_frame(Example_Text = c("I am perfectly convinced by it that Mr. Darcy has no defect. He owns it himself without disguise."))


unnest_tokens(df, input = "Example_Text", output = "Sentence", token = "sentences")
Run Code Online (Sandbox Code Playgroud)

结果

# A tibble: 3 x 1
                              Sentence
                                <chr>
1 i am perfectly convinced by it that mr.
2                    darcy has no defect.
3    he owns it himself without disguise.
Run Code Online (Sandbox Code Playgroud)

有什么简单的方法可以用来tidytext标记句子,但不会遇到常见缩写(例如“Mr.”)的问题?或“博士”。被解释为句子结尾?

text r tidytext

4
推荐指数
2
解决办法
3871
查看次数

在 testthat 中抛出警告而不是错误

我正在为一个包编写单元测试,并且有一些测试,我不希望测试在失败时抛出错误,而是发出警告。

这不是我真正的代码,但假设我想测试如下内容:

add_x_y <- function(x, y) x + y
expect_equal( add_x_y(2, 2), 3 )
Run Code Online (Sandbox Code Playgroud)

输出是一个错误:

Error: add_x_y(2, 2) not equal to 3.
1/1 mismatches
[1] 4 - 3 == 1
Run Code Online (Sandbox Code Playgroud)

是否有变体或替代函数会在此检查中引发警告而不是错误?

r testthat

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

在RMarkdown PDF中,将部分编号从“ X部分”更改为“ X部分”

我正在使用RMarkdown做课程笔记,每个主要部分都对应于一个给定的讲座。我想将节标题自动设置为“第1课”,“第2课”等格式。这基本上是我要寻找的内容。

讲座1

复习课程。

第二讲

实际学习一些东西

但是,当我使用RMarkdown的默认设置时,会得到以下格式(节号在名称前):

1讲

复习课程。

2讲座

实际学习一些东西。

我如何将自动编号设置为:

(1)跟随名称(例如“ 10月1日-讲座1 ”)

要么

(2)是否以名称引用(例如,使用某种伪代码“ October 1st - Lecture {%section_number%}”)?

下面是可复制为PDF的RMarkdown代码的最小可复制示例。

---
title: "Course_Notes"
output: 
  pdf_document:
    number_sections: true
---

# Lecture
Going over the syllabus.

# Lecture
Actually learning some stuff
Run Code Online (Sandbox Code Playgroud)

latex r knitr r-markdown

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

使ggplot的条带文本扩展到轴文本上

使用ggplot2,我想制作一个多面图,其中条带文本在每个子图和它的y轴文本中心,而不是仅在子图上居中.作为参考,这是我要创建的图的示例:

期望的情节

在此输入图像描述

这与相同的图形形成对比,但是条带文本仅在子图区域上居中,如下所示.

默认ggplot2图

在此输入图像描述

作为参考,这是用于生成此图的代码:

library(ggplot2)
library(dplyr)

diamonds_plot <- diamonds %>% 
  filter(clarity %in% c("IF", "I1")) %>% 
  ggplot(aes(x = price, y = cut)) +
  geom_point() +
  facet_wrap(~ clarity, scales = 'free')
Run Code Online (Sandbox Code Playgroud)

如何以编程方式进行此更改?

我猜这可以通过编辑从调用获得的布局对象来完成diamonds_plot %>% ggplot_build %>% ggplot_gtable(),但是要做的确切更改很难确定.

r ggplot2 gridextra

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

将整数转换为单词

为了使数据可视化样式化,我希望能够使用单词显示整数(例如

“ 217年”

)而不是数字(例如2017)。

作为我要寻找的示例,下面是一个适用于小的标量整数的快速函数:

int_to_words <- function(x) {

                   index <- as.integer(x) + 1
                   words <- c('zero', 'one', 'two', 'three', 'four',
                              'five', 'six', 'seven', 'eight', 'nine',
                              'ten')
                   words[index]
}


int_to_words(5)
Run Code Online (Sandbox Code Playgroud)

r

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

标签 统计

r ×12

dplyr ×3

knitr ×3

r-markdown ×3

ggplot2 ×2

gridextra ×1

latex ×1

testthat ×1

text ×1

tidytext ×1

user-profile ×1

vbscript ×1

yaml ×1