在 R 会话结束时关闭 R Studio 时,系统会通过对话框询问我:“将工作区图像保存到 [工作目录] ?”
这意味着什么?如果我选择保存工作区图像,它保存在哪里?我总是选择不保存工作区图像,保存它有什么坏处吗?
我查看了stackoverflow,但没有找到解释这个问题是什么意思的帖子?我只找到一个关于如何禁用提示的问题(没有简单的答案......):如何禁用“保存工作区图像?” 在 R 中提示?
我有一个字符串,比方说MyString ="aabbccawww".我想使用gsub表达式将MyString中的最后一个"a"替换为"A",并且仅使用它.那就是"aabbccAwww".我在网站上发现了类似的问题,但他们都要求更换最后一次出现以及之后的所有内容.我尝试过gsub("a [^ a]*$","A",MyString),但它给出了"aabbccA".我知道我可以为此目的使用stringi函数,但我需要在代码的一部分中实现解决方案,其中使用这样的函数会很复杂,所以我想使用正则表达式.有什么建议吗?
我在使用具有独特功能的管道运算符 (%>%) 时遇到了一些麻烦。
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 用户。建议尽可能频繁地更新 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 studio 中使用 R 已经好几年了。你知道R studio有没有朗读选项?我正在寻找与 Microsoft Word 中的“大声朗读”选项类似的选项,它可以大声朗读代码。
先感谢您
使用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?
我有以下数据框:
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)
所以这行得通,但新值取代了旧值。如何将结果添加到数据框中并控制新名称?
我正在尝试在同一个 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)
然而,结果是包含两个表的单个表。知道如何一个接一个地添加到两个表中吗?
我有以下数据框,其中我预测 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 参数,但它仅控制键与其相应标签之间的距离。
知道如何反转对齐吗?
使用 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 中的一列吗?还有别的事吗?
我正在编写一个函数,根据某些分组(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。但这并不优雅,我的真实代码比几行要长得多。
任何的想法?
我有以下数据框:
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)
任何想法?
我的实验由两个因素组成,一是受试者之间的因素,一是受试者内部的因素。Age
是受试者间因素,有两个水平:(低和高)。Time
是受试者内因素,包含三个级别:1、4、5。dv
是我的因变量,id
是每个参与者的标识符。我附上了 6 位第一批参与者的数据。
我使用 R 进行了方差分析,对这两个因素都产生了显着的结果。我有两个计划对比:
在时间 1 中,我想比较两个年龄组(低与高)。即对象之间的比较。
在年龄较低的情况下,我想比较时间 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)