add_rownnames有效,但rownames_to_column无效

问题描述

我有一个很大的数据框,可以使用describe进行汇总,以创建新的摘要数据框

 df_sum <- describe(df[my_subset])

我检查df_sum是否具有行名

has_rownames(df_sum)
[1] TRUE
browse[2]> rownames(df_sum)
 [1] "Q1"                "Q2"                "Q3"                "Q4"                "Q5"               
 [6] "Q6"                "Q7"                "Q8"                "Q9"                "Q10"              

我现在尝试将这些行名转换为新列

browse[2]> rownames_to_column(df_sum,var = "Test")
Error in Math.data.frame(list(Test = c("Q1","Q2","Q3","Q4","Q5","Q6",: 
  non-numeric variable(s) in data frame: Test

但是,如果我使用了不推荐使用的功能add_rownnames,那么它将起作用!

browse[2]> add_rownames(df_sum,var = "Test")
# A tibble: 22 x 14
   Test   vars     n  mean    sd median trimmed   mad   min   max range    skew kurtosis     se
   <chr> <int> <dbl> <dbl> <dbl>  <dbl>   <dbl> <dbl> <dbl> <dbl> <dbl>   <dbl>    <dbl>  <dbl>
 1 Q1        1   963  5.22  2.53      5    5.29  2.97     0    10    10 -0.216    -0.615 0.0814
 2 Q2        2   963  5.50  2.56      6    5.56  2.97     0    10    10 -0.240    -0.656 0.0826
 3 Q3        3   963  4.82  2.72      5    4.83  2.97     0    10    10 -0.0509   -0.860 0.0878
 4 Q4        4   963  4.76  3.03      5    4.73  2.97     0    10    10 -0.0102   -1.05  0.0976
 5 Q5        5   963  5.07  3.10      5    5.08  4.45     0    10    10 -0.0366   -1.16  0.100 
 6 Q6        6   963  4.13  3.18      4    3.97  4.45     0    10    10  0.250    -1.16  0.103 
 7 Q7        7   963  4.89  3.14      5    4.86  4.45     0    10    10  0.0330   -1.19  0.101 
 8 Q8        8   963  1.83  2.71      0    1.29  0        0    10    10  1.41      0.862 0.0872
 9 Q9        9   963  4.56  3.05      5    4.50  2.97     0    10    10  0.0499   -1.08  0.0982
10 Q10      10   963  4.11  2.98      4    3.95  2.97     0    10    10  0.327    -0.931 0.0962

add_rownames失败并显示错误消息时,是什么使rownames_to_column工作?我该怎么做才能修复rownames_to_column

预先感谢

托马斯·飞利浦

解决方法

我需要在代码中添加as.data.frame

df_sum <- describe(df[my_subset]) 
> class(df_sum)
[1] "psych"      "describe"   "data.frame"

如果我将rownames_to_column应用于df_sum,请获取我前面提到的错误消息。但是,如果我输入

df_sum <- as.data.frame(describe(df[my_subset])) 
> class(df_sum)
[2] "data.frame"

所以如果我先写

df_sum <- as.data.frame(describe(df[my_subset])) 

然后将rownames_to_column应用于df_sum,它按预期工作。