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
问题
如何创建一个以平均值作为列名的数据框?
如果你想使用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)