n()函数出现错误怎么办

#n()函数分组时运行错误

library(dplyr)

df <- tibble(
  g=sample(rep(letters[1:3],1:3)),
  x=runif(6),
  y=runif(6)
)
gf <- df %>% group_by(g)
gf %>% summarise(n=n())



出现错误提示

```r
`summarise()` has grouped output by 'g'. You can override using the `.groups` argument.
# A tibble: 0 × 2
# Groups:   g [0]
# ℹ 2 variables: g , n 
Warning message:
Returning more (or less) than 1 row per `summarise()` group was deprecated in dplyr 1.1.0.
ℹ Please use `reframe()` instead.
ℹ When switching from `summarise()` to `reframe()`, remember that `reframe()` always returns an
  ungrouped data frame and adjust accordingly.
Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated. 
> 

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7562363
  • 这篇博客你也可以参考下:编写一个递归算法,输出自然数1,2,…,n这n个元素的全排列
  • 除此之外, 这篇博客: n后问题中的 n后问题 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    一、 问题描述

    • 在n×n格的棋盘上放置彼此不受攻击的n个皇后,按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子,请输出皇后的位置以及对应皇后的解法个数。

    分析:

    1. 理解皇后不被攻击的条件:n后问题等价于在n*n格的棋盘上放置n个皇后,任何两个皇后不能放在同一行或同一列或同一斜线上。

    2. 算法模块简要分析。
      用数组存储皇后的位置,将i设置为0。
      Int  place(*x,n) :数组x[] 用来表示列数,n为皇后个数,用来判断皇后 否被攻击,判断的条件是(x[i]-x[n]==i-n||x[i]-x[n]==n-i||x[i]==x[n])即用来判断“同一行或同一列或同一斜线上”。
      用数组存储皇后的位置,将i设置为0。
      Int  iniprint(*x,n):初始化打印函数,相当于对棋盘初始化。将可以放皇后的位置记为“1”,不放皇后的位置记为“0”
      Int  Nqueen(int n):n皇后问题求解,如果满足一组可行解,sum++。Int i=0,如果x[i]>=n的时候即进行下一行,i++;当i=n时,sum++;输出该组可行解的个数和位置的矩阵。并且i–,回溯到上一层继续搜索可行解。

    二、 程序实现

    #include<stdio.h>
    static int n,sum=0;//可行解个数
    static int locate[20];
    int place(int k) 
    {//判断是否在一条线上并返回0,1
           for(int i=1;i<k;i++){
    	       if(locate[i] == locate[k] || (i+locate[i])==(locate[k]+k)||(locate[i]-i)==(locate[k]-k))
    		              return 0;
    				}
    				return 1;
    			}
    			void Back(int m){
    				if(m>n){
    					sum++;
    					for(int i=1;i<=n;i++){
    						for(int a=1;a<=n;a++){
    							if(a<locate[i]||a>locate[i])
    							printf(" * ");
    							else
    							printf(" # ");
    //如果已经安排完毕则输出棋盘和记录 
    						}
    						printf("\n"); 
    					}
    					printf("第%d种解决办法如上图所示:",sum);
    					for(int i=1;i<=n;i++)
    					printf("%d ",locate[i]);
    					printf("\n\n\n");
    				}
    				else
    				{
    				//如果没有安排完则地柜继续下一个安排,无解则返回上一个 
    					for(int i=1;i<=n;i++)
    					{
    						locate[m]=i;
    						if(place(m))
    						Back(m+1); 
    					}
    				}
    	 
    			}
    			int main()
    			{
    				printf("请输入皇后的数量:");
    				scanf("%d",&n);
    				printf("\n(#表示皇后,*表示棋盘)\n\n\n");
    				Back(1);
    				printf("%d个皇后共有以上%d种解法\n\n\n",n,sum);
    			}
    

    三、 实验结果与分析
    在这里插入图片描述
    在这里插入图片描述

    结果分析:

    • 通过本次实验,我对回溯法有了深刻的理解,并且对递归得到了巩固。在编写N皇后算法的过程中,遇到了一些问题,当以普通的方式回溯时,当n>=11时,程序运行时间变得很长,说明该算法的时间复杂度比较大。
    • 回溯法有“通用解题法”之称,用它可以搜索问题的所有解。它是一个既带
      有系统性又带有跳跃性的搜索算法,是按照深度优先策略,从根节点出发搜索解空间树。
    • 算法搜索至某一节点时,利用判断函数先判断该节点内是否包含问题的解,如果不包含则直接跳过,节省时间,相关的判断函数裉据实际问题来编写。
  • 以下回答来自chatgpt: 针对该问题,由于缺乏具体的错误信息、编程语言和版本等信息,无法给出具体的解决方案。建议提供更多相关信息,以便更好地理解问题并提供更确切的帮助。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^