如何在R中命名map_dfc()的列?

use*_*544 5 mapping r dataframe purrr

purrr我有一个关于命名(Tidyverse)函数产生的列的问题map_dfc

我有一个输出单个数字的函数,假设这个函数是rnorm(). 我想使用n = 10不同的平均值复制此函数多次,并将输出保存到数据帧,列名称是mean.

library(purrr)
f_replicates <- function(n){
  replicate(n=10, rnorm(n=1, mean = n))
}

map_dfc(c(4, 10, 20), f_replicates)
Run Code Online (Sandbox Code Playgroud)

这将创建一个 tibble,其中列名称设置为

新名称:

  • 不适用 -> ...1
  • 不适用 -> ...2
  • 不适用 -> ...3

问题

如何创建一个以平均值作为列名的数据框?

Ron*_*hah 5

如果你想使用map_dfc你需要命名输出。f_replicates您可以在函数内部或调用之后命名输出map_dfc

f_replicates <- function(n){
  setNames(data.frame(replicate(n=10, rnorm(n=1, mean = n))), paste0('mean_', n))
}

purrr::map_dfc(c(4, 10, 20), f_replicates)

#     mean_4   mean_10  mean_20
#1  6.058674 10.403541 18.76108
#2  4.871537  7.659355 20.11602
#3  3.654629 11.274651 19.90208
#4  3.848754  9.033448 20.22821
#5  4.788205  9.135202 19.80254
#6  4.035633  9.637215 20.27024
#7  3.748321 10.521144 19.55705
#8  1.927361 10.364091 20.95778
#9  3.857333  9.998084 21.17971
#10 2.490418 11.254264 20.32196
Run Code Online (Sandbox Code Playgroud)