使用 Tidyverse 进行模拟——将数据转换为 tibble 格式
Simulation with Tidyverse -- putting data into tibble format
我正在尝试 运行 使用 tidyverse 在 R 中进行模拟。此代码有效,但不能很好地扩展到多个变量。
有什么改进方法吗?我试过 purrr
但没有成功。
下面的示例从正态分布中抽取 5 个值并重复 3 次。我怎么能重复 n
次而不是 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()
如果我们需要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()
我正在尝试 运行 使用 tidyverse 在 R 中进行模拟。此代码有效,但不能很好地扩展到多个变量。
有什么改进方法吗?我试过 purrr
但没有成功。
下面的示例从正态分布中抽取 5 个值并重复 3 次。我怎么能重复 n
次而不是 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()
如果我们需要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()