0

我一直在进行一些OpenIntro 统计练习,以开始熟悉 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

无论我做什么,它似乎都不起作用。例如,即使我成功定义了总数,当我需要编写实验室报告时,它也会再次出现错误并给我另一个错误。有时我会切换编写变异代码的方式。例如,我也使用了

   arbuthnot <- arbuthnot %>%
      mutate(boy_ratio = boys / total)

但是,即使我将此代码与我尝试定义总数的解决方案结合使用,它仍然不起作用。

在此处输入图像描述

我不确定此时该做什么,因为该图显示在 RStudio 中。该比率是准确的,它也显示在我生成的表格中。

变量总计在该表中。我尝试重新启动并重新运行 R 中的所有代码块。我的所有表格和图表都完美呈现,然后当我再次尝试编写我的实验室报告时,它在第 54 行出现错误。

我已经尝试解决这个问题 2 天了,但我不确定我应该怎么做。

我希望这里的社区能够给我一些关于如何解决这个问题的建议 :) !如果您需要更多信息或更多代码,请告诉我:)!

祝大家有个美好的一天!

4

2 回答 2

0

为了帮助其他人帮助您,请考虑制作一个最小工作示例(MWE),例如使用reprex包。如果没有更多细节,几乎不可能确切知道什么时候出错了。

错误消息指出total环境中arbuthnot没有并且不包含 column total,因此可能后者已创建但未分配。当您以交互方式运行代码并在某个时候(使用您提供的代码)创建列或变量时,变量可能在您的环境中。但是,请注意,在编织文件时,脚本会在新环境中从头开始编译.Rmd,在这种情况下,它找不到变量并中止。

要调试您的代码,请考虑将代码块第 53-58 行替换为 print 语句,例如head(arbuthnot),以查看输出文件中的内容并确认tibble确实包含总计。

或者,通过逐块运行代码进行调试,直到在新环境中收到错误消息。在 RStudio 中,尝试Ctrl + Shift + F10(相当于 Session > Restart 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()
于 2021-09-08T23:30:26.423 回答
0

感谢@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()

插入此代码后,文件能够被缝合并生成我的实验室报告。

我要感谢您抽出时间来帮助我 :) !

有一个伟大的一周。

于 2021-09-09T17:48:23.270 回答