代码在控制台中运行良好,但出现错误:编织为pdf时没有行要聚合

时间:2020-06-22 10:27:54

标签: r knitr aggregate-functions

问题3-每年计算城市在每种产品上的明智支出。

df:

S.No. Country   Product     Year    Amount

1.     US        GOLD       2004    487330
2.     UK       SILVER      2005    345701
3.    RUSSIA   PLATINUM     2006    450000
4.    INDIA    PLATINUM     2004    439980
5.    FRANCE     GOLD       2005    546000
6.    FRANCE    SILVER      2004    320000
7.     UK        GOLD       2006    215000

我使用的汇总代码是:

df <- aggregate(df$Amount, 
                by = list(Country = df$Country, Product = df$Product, Year = df$Year),
                FUN = sum)

就像这样-df:

S.No。国家产品年份金额

  1.   US        GOLD       2004    487330
    
  2.   UK       SILVER      2005    345701
    
  3. RUSSIA    PLATINUM     2006    450000
    
  4. INDIA     PLATINUM     2004    439980
    
  5. FRANCE      GOLD       2005    546000
    

我使用的汇总代码是:

df <-合计(df $ Amount,by = list(国家= df $国家,产品= df $产品,年= df $年),FUN =总和)

1 个答案:

答案 0 :(得分:1)

我之前曾碰到过这个问题,那时我了解到您的控制台环境与用于编织Markdown文件的环境不同。您尚未发布整个内容。 Rmd文件(如果要从Markdown文件进行编织),但是我想df是在控制台中定义的,而不是在实际文件中定义的。

此外,df()在R中被定义为F分布的stats::df()函数。在没有数据框df的情况下,控制台将还原为使用它。

以下面的示例为例,您可以尝试说明我的观点:

  • 在控制台中创建一个数据框。例如,my_df <- data.frame(x=1:10, y=1:10)

  • 打开一个新的Markdown文件,并在文件中包含一个仅打印数据框的代码:print(my_df)

  • 运行markdown文件中的代码块,一切正常。似乎根本没有问题。如果您使用的是Rstudio,则将看到my_df数据框的输出打印在其中。

  • 将.Rmd文件编织为...任何内容。您将收到以下错误:Error in print(my_df) : object "my_df" not found...

在编辑器中运行代码块时,它将在控制台环境中运行。编织文件时,将创建一个单独的环境。请记住这一点,然后再次检查-我敢打赌,文件中未定义df-您可能在控制台中定义了它。