我一直在进行一些来自 OpenIntro stats 的练习,以开始熟悉 R 和 RStudio。
我已经完成了所有练习,我在 R studio 中运行我的代码,并且我得到了我在 RStudio 中生成的所有表格和图表,没有出现问题。
但是,当需要编织数据时,我收到一个错误(我相信我不应该得到这个错误,因为我能够在 RStudio 中运行我的代码而没有任何错误,并且我的表格和图表是准确生成的)。
练习 3 中的编织错误,我被要求绘制随时间推移出生的男孩比例的图。这是我的代码示例(第 53 至 58 行)
```{r plot-prop-boys-arbuthnot}
mutate (arbuthnot, boy_ratio = boys / total)
ggplot(data = arbuthnot, aes(x = year, y = boy_ratio)) +
geom_line()
```
但是,然后我收到一条我不明白的大错误消息。它说没有找到总数。我尝试通过插入来定义总数:
total <- boys + girls
或插入:
total <- arbuthnot$boys + arbuthnot$girls
无论我做什么,它似乎都不起作用。例如,即使我成功定义了总数,当我需要编织实验室报告时,它也会再次出现错误并给我另一个错误。有时我会改变编写 mutate 代码的方式。比如我也用过
arbuthnot <- arbuthnot %>%
mutate(boy_ratio = boys / total)
但是,即使我将此代码与我尝试定义总数的解决方案结合使用,它仍然不起作用。
我不确定此时要做什么,因为该图显示在 RStudio 中。该比率是准确的,它也显示在我生成的表格中。
变量总计位于该表中。我尝试重新启动并重新运行 R 中的所有代码块。我的所有表格和图表都完美地显示出来,然后当我尝试再次编写我的实验室报告时,它在第 54 行出现错误。
我已经尝试解决这个问题两天了,但我不确定我应该做什么。
我希望这里的社区能够给我一些关于如何解决这个问题的建议:)!如果您需要更多信息或更多代码,请告诉我:)!
祝大家度过美好的一天!
为了帮助其他人帮助您,请考虑制作一个 最小工作示例 (MWE),例如使用
reprex
包。如果没有更多细节,几乎不可能准确知道错误时什么。
错误消息指出环境中没有
total
并且 arbuthnot
不包含列 total
,因此可能后者已创建但未分配。当您以交互方式运行代码并在某个时刻创建列或变量(使用您提供的代码)时,该变量可能位于您的环境中。但是,请注意,在编织 .Rmd
文件时,脚本会在新环境中从头开始编译,在这种情况下,它找不到变量并中止。
要调试代码,请考虑用 print 语句替换代码块第 53-58 行,例如
head(arbuthnot)
,以查看输出文件中出现的内容并确认 tibble
确实包含总计。
或者,通过逐块运行代码来进行调试,直到在新环境中收到错误消息。在 RStudio 中,尝试
Ctrl + Shift + F10
(相当于会话 > 重新启动 R)清除所有内容并重新开始。
以下代码块应该可以工作
library(openintro)
library(tidyverse)
data(arbuthnot)
arbuthnot <- arbuthnot %>% # note assignment (write over database)
mutate(total = boys + girls, # define total first
boy_ratio = boys / total)
ggplot(data = arbuthnot,
mapping = aes(x = year, y = boy_ratio)) +
geom_line()
感谢@lbelzile 提供的宝贵建议。
将来,我将使用最小的工作示例来更好地向其他贡献者通报堆栈溢出问题。我认为我提供的证据已经足够了。
话虽这么说,感谢您发送给我的代码,我能够解决问题。
按照您的说明的以下部分,这是有效的代码:
head(arbuthnot)
library(tidyverse)
library(openintro)
data(arbuthnot)
arbuthnot <-arbuthnot %>%
mutate (total = boys + girls, boy_ratio = boys / total)
ggplot(data = arbuthnot, aes(x = year, y = boy_ratio)) +
geom_line()
插入此代码后,可以缝合文件并生成我的实验报告。
我要感谢您花时间帮助我:)!
祝您度过愉快的一周。