我想通过一个类似quantile()的函数来保持命名向量的生成,其中我想有一个名为name的列,它是传递的概率的值.

使用tidyVerse给出了我想要的示例:

library(TidyDensity)
library(data.table)
library(reshape)

func <- quantile

x <- mtcars$mpg

tb <- tidy_bootstrap(x) %>%
  bootstrap_unnest_tbl()

df_tbl <- tb %>% 
  split(.$sim_number) %>%
  map(~ .x %>% pull(y))

purrr::map(
    df_tbl, ~ func(.x) %>%
      purrr::imap(.f = ~ cbind(.x, name = .y)) %>%
      purrr::map_df(dplyr::as_tibble)
  ) %>%
    purrr::imap(.f = ~ cbind(.x, sim_number = .y)) %>%
    purrr::map_df(dplyr::as_tibble) %>%
    dplyr::select(sim_number, name, .x) %>%
    dplyr::mutate(.x = as.numeric(.x)) %>%
    dplyr::mutate(sim_number = factor(sim_number)) %>%
    dplyr::rename(value = .x)

# A tibble: 10,000 × 3
   sim_number name  value
   <fct>      <chr> <dbl>
 1 1          0%     10.4
 2 1          25%    14.7
 3 1          50%    19.2
 4 1          75%    22.8
 5 1          100%   33.9
 6 2          0%     10.4
 7 2          25%    14.7
 8 2          50%    17.8
 9 2          75%    21.4
10 2          100%   32.4
# … with 9,990 more rows

当我使用data.table时,我不知道如何将从quantile()函数返回的向量的名称列起来,而这实际上可以来自任何函数.

以下是我得到的信息:

tbd <-  tb %>%
  as.data.table()

> tbd[, .(quantile = func(y)), by = sim_number]
       sim_number quantile
    1:          1     10.4
    2:          1     14.7
    3:          1     19.2
    4:          1     22.8
    5:          1     33.9
   ---                    
 9996:       2000     10.4
 9997:       2000     15.5
 9998:       2000     17.8
 9999:       2000     21.4
10000:       2000     32.4

推荐答案

我们可以melt

melt(tbd[, as.list(func(y)), sim_number], id.var = 'sim_number',
        value.name = 'quantile')

-输出

      sim_number variable quantile
           <fctr>   <fctr>    <num>
    1:          1       0%     14.7
    2:          2       0%     10.4
    3:          3       0%     10.4
    4:          4       0%     10.4
    5:          5       0%     10.4
   ---                             
 9996:       1996     100%     30.4
 9997:       1997     100%     33.9
 9998:       1998     100%     33.9
 9999:       1999     100%     33.9
10000:       2000     100%     33.9

R相关问答推荐

如何计算前一行的值,直到达到标准?

pickerInput用于显示一条或多条geom_hline,这些线在图中具有不同 colored颜色

根据模式将一列拆分为多列,并在R中进行拆分

ggplot的轴标签保存在officer中时被剪切

在R中为马赛克图中的每个字段着色

如何自定义3D散点图的图例顺序?

汇总数据表中两个特定列条目的值

使用较长的查询提取具有部分匹配的列表中的较短目标,

LOF中的插图短文字幕

R中的哈密顿滤波

仅 Select 超过9行的CSV文件

如何删除设置大小的曲线图并添加条形图顶部数字的百分比

循环遍历多个变量,并将每个变量插入函数R

是否从列中删除★符号?

如果满足条件,则替换列的前一个值和后续值

使用其他DF中的文件名将列表中的每个元素保存到文件中

如何编辑被动式数据表?

即使使用相同的种子,mtry值也取决于TuneGrid范围

根据单个条件变异多个列

R-有没有办法比较列字符串之间的单个项目?