小编Rti*_*ist的帖子

在 R 中保存工作区图像

在 R 会话结束时关闭 R Studio 时,系统会通过对话框询问我:“将工作区图像保存到 [工作目录] ?”

这意味着什么?如果我选择保存工作区图像,它保存在哪里?我总是选择不保存工作区图像,保存它有什么坏处吗?

我查看了stackoverflow,但没有找到解释这个问题是什么意思的帖子?我只找到一个关于如何禁用提示的问题(没有简单的答案......):如何禁用“保存工作区图像?” 在 R 中提示?

workspace r

9
推荐指数
1
解决办法
6854
查看次数

使用正则表达式替换字符串的最后一次出现(并且仅替换它)

我有一个字符串,比方说MyString ="aabbccawww".我想使用gsub表达式将MyString中的最后一个"a"替换为"A",并且仅使用它.那就是"aabbccAwww".我在网站上发现了类似的问题,但他们都要求更换最后一次出现以及之后的所有内容.我尝试过gsub("a [^ a]*$","A",MyString),但它给出了"aabbccA".我知道我可以为此目的使用stringi函数,但我需要在代码的一部分中实现解决方案,其中使用这样的函数会很复杂,所以我想使用正则表达式.有什么建议吗?

regex r

7
推荐指数
2
解决办法
2079
查看次数

在 r 中的 unique() 函数中使用管道不起作用

我在使用具有独特功能的管道运算符 (%>%) 时遇到了一些麻烦。

df = data.frame(
  a = c(1,2,3,1),
  b = 'a')

unique(df$a) # no problem here
df %>% unique(.$a) # not working here
# I got "Error: argument 'incomparables != FALSE' is not used (yet)"
Run Code Online (Sandbox Code Playgroud)

任何的想法?

r function magrittr

7
推荐指数
2
解决办法
3114
查看次数

如何自动更新R到最新版本?

我在这里发布这个问题是因为我认为它困扰了许多 R 用户。建议尽可能频繁地更新 R 和软件包(请参阅https://community.rstudio.com/t/should-i-update-all-my-r-packages-frequently-yes-no-why/5856) 。然而,查看您的版本是否是最新版本、下载最新版本的 R 并重新安装所有软件包可能会非常耗时。

最近我发现了安装包。它提供了非常好的函数 updateR()。根据文档, updateR() 函数执行以下操作:查找最新的 R 版本,下载它,运行安装程序,删除安装文件,将旧包复制并更新到新的 R 安装

感谢这篇文章:我应该如何处理“package 'xxx' is not available (for R version xyz)”警告?

r

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

R Studio 是否为视障数据科学家提供“大声朗读”选项?

我有视力障碍,在 R studio 中使用 R 已经好几年了。你知道R studio有没有朗读选项?我正在寻找与 Microsoft Word 中的“大声朗读”选项类似的选项,它可以大声朗读代码。

先感谢您

r blindness rstudio

5
推荐指数
0
解决办法
66
查看次数

rlang包中sym()和parse_expr()有什么区别?

使用rlang包,我想知道sym()和parse_expr()之间有什么区别.考虑以下表达式:

ex1 = sym('a')
ex2 = parse_expr('a')
Run Code Online (Sandbox Code Playgroud)

他们都回来了

a

identical(ex1, ex2)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

假设我现在需要一个问题:

ex3 = quo(!!sym('a'))
ex4 = quo(!!parse_expr('a'))
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,结果是:

<quosure>
expr: ^a
env:  global

identical(ex3, ex4)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

但是,由于某些原因,以下两个不一样.

ex5 = quo(!!sym('a - b'))
ex6 = quo(!!parse_expr('a - b'))
Run Code Online (Sandbox Code Playgroud)

显然他们两个都是相同的:

<quosure>
expr: ^a - b
env:  global
Run Code Online (Sandbox Code Playgroud)

然而,

identical(ex5, ex6)
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

我的一些问题是sym()和parse_expr()之间有什么区别?一个人做了什么,另一个不能?为什么ex5显然与ex6相似但相同(ex5,ex6)返回FALSE?

string evaluation r rlang

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

在单个 mutate() 语句中组合多个 cross(),同时控制 R 中的变量名称

我有以下数据框:

df = data.frame(a = 10, b = 20, a_sd = 2, b_sd = 3)

   a  b a_sd b_sd
1 10 20    2    3
Run Code Online (Sandbox Code Playgroud)

我想计算 a/a_sd、b/b_sd,并将结果添加到数据帧中,并将它们命名为 ratio_a、ratio_b。在我的数据框中,我有很多变量,所以我需要一个“广泛”的解决方案。我试过:

df %>% 
  mutate( across(one_of( c('a','b')))/across(ends_with('_sd'))) 
Run Code Online (Sandbox Code Playgroud)

这给了:

  a        b a_sd b_sd
1 5 6.666667    2    3
Run Code Online (Sandbox Code Playgroud)

所以这行得通,但新值取代了旧值。如何将结果添加到数据框中并控制新名称?

r dplyr tidyverse mutate across

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

使用 r 包“flextable”将多个表格导出到 Word 文档

我正在尝试在同一个 word 文档中导出两个(flex)表。这是我所拥有的:

df1 <- data.frame(a = 1:3, b = 1:3)
df2 <- data.frame(c = 11:13, d = 11:13)

library(flextable)
df1_ft <- regulartable(df1)
df2_ft <- regulartable(df2)

library(officer)
word_export <- read_docx()
word_export <- body_add_flextable(word_export, df1_ft)
word_export <- body_add_flextable(word_export, df2_ft)
print(word_export, 'try.docx')
Run Code Online (Sandbox Code Playgroud)

然而,结果是包含两个表的单个表。知道如何一个接一个地添加到两个表中吗?

document export r dataframe

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

在 ggplot2 中将键图例和标签与图例框的右侧对齐

我有以下数据框,其中我预测 y 作为年龄和性别的函数:

df = data.frame(
  age = c('old', 'old', 'young', 'young'),
  gender = c('male', 'female', 'male', 'female'),
  y = 1:4)
Run Code Online (Sandbox Code Playgroud)

以及相应的图表:

ggplot(df, aes(x=age, y=y, fill = gender)) + 
  geom_col(position = 'dodge')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想控制图例框的外观。特别是,我希望整个框向右对齐(而不是向左对齐)。因此,关键图例应该出现在框的右侧,左侧应该是标签。

我知道 theme() 函数的 legend.text.align 参数,但它仅控制键与其相应标签之间的距离。

知道如何反转对齐吗?

r alignment legend ggplot2

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

如何在 R 中将 mutate_at() 与两组变量一起使用

使用 dplyr,我想将一列除以另一列,其中两列具有相似的模式。我有以下数据框:

My_data = data.frame(
  var_a = 101:110,
  var_b = 201:210,
  number_a = 1:10,
  number_b = 21:30)
Run Code Online (Sandbox Code Playgroud)

我想创建一个新变量:var_a_new = var_a/number_a、var_b_new = var_b/number_b 等等(如果我有 c、d 等)。

My_data %>%
  mutate_at(
    .vars = c('var_a', 'var_b'),
    .funs = list( new = function(x) x/(.[,paste0('number_a', names(x))]) ))
Run Code Online (Sandbox Code Playgroud)

我没有得到错误,但得到了错误的结果。我认为问题是我不明白“x”是什么。它是 .vars 中的字符串之一吗?它是 My_data 中的一列吗?还有别的事吗?

scope r dplyr

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

如何在 R 中使用带有空参数的 group_by()?

我正在编写一个函数,根据某些分组(g1 和 g2)计算变量的平均值。我希望该函数能够处理用户只想计算组间平均值的情况,因此 group 参数将为空。我想要一个使用 tidyverse 的解决方案。

假设如下:

y = 1:4
g1 = c('a', 'a', 'b', 'b')
g2 = c(1,2,1,2)
MyData = data.frame(g1, g2, y)

MyFun = function(group){
  group_sym = syms(group)
  MyData %>% 
    group_by(!!!group_sym) %>% 
    summarise(mean = mean(y))
}

# this works well
MyFun(group = c('g1', 'g2'))
Run Code Online (Sandbox Code Playgroud)

现在假设我想要所有组中 y 的平均值。我希望该功能能够处理类似

MyFun(group = '')
Run Code Online (Sandbox Code Playgroud)

或者

MyFun(group = NULL)
Run Code Online (Sandbox Code Playgroud)

所以理想情况下,我希望 group 参数为空/空,因此 MyData 不会被分组。一种解决方案可能是在函数的开头添加一个条件,检查参数是否为空以及是否为 TRUE 写汇总而不使用 group_by。但这并不优雅,我的真实代码比几行要长得多。

任何的想法?

r tidyr tidyverse

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

如何在ggplot中对齐图例键和文本?

我有以下数据框:

 df = data.frame(
  x = c(1:10, 1:10),
  y = 1:20,
  group = rep(c('male', 'female'), each = 10))

ggplot(df, aes(x=x, y=y, color = group)) + 
  geom_smooth()
Run Code Online (Sandbox Code Playgroud)

如您所见,文本图例(男性、女性)出现在按键图例(蓝色和红色水平条)的右侧。由于语言原因,我想要相反的结果:关键图例应该位于文本图例的右侧。我只找到了将文本左对齐或右对齐的解决方案,但没有将键放在文本之前或之后。(请参阅此处在 ggplot 中对齐图例文本

ggplot(df, aes(x=x, y=y, color = group)) + 
  geom_smooth() +
  theme(
    legend.text.align = 1)
Run Code Online (Sandbox Code Playgroud)

任何想法?

r legend ggplot2

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

混合模型中的计划对比

我的实验由两个因素组成,一是受试者之间的因素,一是受试者内部的因素。Age是受试者间因素,有两个水平:(低和高)。Time是受试者内因素,包含三个级别:1、4、5。dv是我的因变量,id是每个参与者的标识符。我附上了 6 位第一批参与者的数据。

我使用 R 进行了方差分析,对这两个因素都产生了显着的结果。我有两个计划对比:

  1. 在时间 1 中,我想比较两个年龄组(低与高)。即对象之间的比较。

  2. 在年龄较低的情况下,我想比较时间 1 和时间 5。即对象内比较。

当然,我可以执行 t 检验,但这似乎不合适,因为我可以将我的标准误差估计基于此处的更多单元格。我的问题是如何进行上述对比,以及适当的自由度是多少?

structure(list(id = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 
5L, 5L, 5L, 5L, 5L, 5L), .Label = c("1", "2", "3", "5", "6", 
"7", "8", "11", "12", "13", "15", "17", "18", "19", "20", "21", 
"22", "23", "24", "25", "27", "28", …
Run Code Online (Sandbox Code Playgroud)

r anova

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