将多个RNG列添加到tibble

发布于 2025-02-10 10:29:48 字数 198 浏览 1 评论 0原文

db %>%
  add_column(X1 = rnorm(nrow(db),0,sample(SD,1)),
             X2 = rnorm(nrow(db),0,sample(SD,1))
             )

我想自动生成100列。我想保持每个采样SD不同的抽奖。

db %>%
  add_column(X1 = rnorm(nrow(db),0,sample(SD,1)),
             X2 = rnorm(nrow(db),0,sample(SD,1))
             )

I would like to automatically generate 100 random columns. I want to keep each sampled sd a different draw.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白日梦 2025-02-17 10:29:48

1-您可以使用 dplyover 软件包。
带有mTCARS的典型示例为db和10个不同的SD:

library(tidyverse)

db <- as_tibble(mtcars)
SD <- 1:10
n_col <- 100

sds <- sample(SD, n_col, replace = TRUE)
names(sds) <- paste0("X", seq_len(n_col))

mutate(db, dplyover::over(sds, ~ rnorm(n(), sd = .x)))

2-另外,您可以分别创建随机生成的矩阵,并使用db在(之后

mat_rng <- as_tibble(lapply(sds, \(x) rnorm(nrow(db), sd = x)))
# or, as well suggested by @Adam
# mat_rng <- map_dfc(sds, rnorm, n = nrow(db), mean = 0)

bind_cols(db, mat_rng)

)仅适用于R&gt; = 4.0.0,因为我使用了新的匿名函数语法)

1 - You can use the dplyover package.
An exemple with mtcars as db and 10 different SD:

library(tidyverse)

db <- as_tibble(mtcars)
SD <- 1:10
n_col <- 100

sds <- sample(SD, n_col, replace = TRUE)
names(sds) <- paste0("X", seq_len(n_col))

mutate(db, dplyover::over(sds, ~ rnorm(n(), sd = .x)))

2 - Alternatively, you can create the random generated matrix separately and bind with db after

mat_rng <- as_tibble(lapply(sds, \(x) rnorm(nrow(db), sd = x)))
# or, as well suggested by @Adam
# mat_rng <- map_dfc(sds, rnorm, n = nrow(db), mean = 0)

bind_cols(db, mat_rng)

(works only with R >= 4.0.0 because I used the new anonymous function syntax)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文