代码之家  ›  专栏  ›  技术社区  ›  max

Tidyverse模拟-将数据转换为tibble格式

  •  0
  • max  · 技术社区  · 5 年前

    我试着用tidyverse在R中运行模拟。这段代码可以工作,但不能很好地扩展到多个变量。

    有什么改进的办法吗?我试过了 purrr 但我没有找到任何成功。

    下面的示例从正态分布中提取5个值,并重复3次。我怎么能重复一遍 n 是3次而不是3次?

    n = 5
    
    x=1:n
    y1 = rnorm(n)
    y2 = rnorm(n)
    y3 = rnorm(n)
    
    # put data into tibble
    df <- tibble(x=x, y1=y1, y2=y2, y3=y3)
    
    # Tidy data -- go from wide to long
    df <- pivot_longer(df, cols=starts_with('y'))
    
    # Make plot
    ggplot(df, aes(x=x, y=value, group=name, color=name))+
      geom_line()
    

    output

    1 回复  |  直到 5 年前
        1
  •  1
  •   akrun    5 年前

    如果需要的话 replicate

    library(dplyr)
    library(tidyr)
    library(stringr)
    library(ggplot2)
    n <- 5
    rpl <- 3
    replicate(rpl, rnorm(n), simplify = FALSE) %>% 
          set_names(str_c('y', seq_along(.))) %>%
          as_tibble %>%
          mutate(x = row_number()) %>%
          pivot_longer(cols = starts_with('y')) %>%
          ggplot(aes(x=x, y=value, group=name, color=name))+       
            geom_line()