r - 为什么map %>% as.data.frame 给出的结果与map_df 不同?

标签 r tidyverse purrr

我是 R 新手,正在尝试了解如何使用 mapmap_df。考虑以下因素:

iris %>% split(.$Species) %>% map_df(function (x) apply(x[, 1:4], 2, mean))

并比较

iris %>% split(.$Species) %>% map(function (x) apply(x[, 1:4], 2, mean)) %>% as.data.frame

前者给出以下输出:

  Sepal.Length Sepal.Width Petal.Length Petal.Width
         <dbl>       <dbl>        <dbl>       <dbl>
1         5.01        3.43         1.46       0.246
2         5.94        2.77         4.26       1.33
3         6.59        2.97         5.55       2.03

后者给出:

             setosa versicolor virginica
Sepal.Length  5.006      5.936     6.588
Sepal.Width   3.428      2.770     2.974
Petal.Length  1.462      4.260     5.552
Petal.Width   0.246      1.326     2.026

我的问题是:为什么?我希望这两个命令给出相同的输出。如何使用 map_df 函数获得第二个输出?

最佳答案

map_df() 似乎按行绑定(bind)列表元素(与 map_dfr() 相同),尽管它在 documentation 中没有明确说明。 。如果您想按列绑定(bind),请使用map_dfc()。请注意,输出是一个小标题,不鼓励使用行名。这个document建议在 tibbles 中使用行名的方法。

iris %>% 
  split(.$Species) %>% 
  map_dfc(function (x) apply(x[, 1:4], 2, mean))

# # A tibble: 4 x 3
#   setosa versicolor virginica
#    <dbl>      <dbl>     <dbl>
# 1  5.01        5.94      6.59
# 2  3.43        2.77      2.97
# 3  1.46        4.26      5.55
# 4  0.246       1.33      2.03

关于r - 为什么map %>% as.data.frame 给出的结果与map_df 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67814395/

相关文章:

r - 奇怪的括号赋值调用 ('[<-' ) 和矩阵参数

r - if_else 用于删除每组中的第一行 - dplyr

r - 如何使用 xml2 和 purrr 提取不同级别的 xml_attr 和 xml_text?

r - T & F 如何作为 R 中 TRUE 和 FALSE 的缩写?

R:更改多个表的列名

r - 使用 dplyr/plyr 计算跨行的百分比?

r - 创建一个虚拟变量列来指示记录是否位于第二个数据帧中?

r - 使用 Tidyverse 将列表转换为向量

r - 如何创建列表列表,然后对其执行矢量化函数

r - 创建循环以向列添加标签 : library(Hmisc)