作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 tibble 中生成随机数,其中不同类别的项目分布不同。我运气不好。这是代码及其产生的错误:
library(dplyr)
letters <- tibble(letter = c(rep("A", 5), rep("B", 5), rep("C", 5) ))
letters %>%
rowwise() %>%
mutate(Proj = case_when(
letter == "A" ~ rpois(1, lambda = .7746),
letter == "B" ~ rnbinom(1, size = 3.3848, mu = 1.2),
letter == "C" ~ rpois(1, lambda = .5057)
))
#> Error in `mutate()`:
#> ! Problem while computing `Proj = case_when(...)`.
#> ℹ The error occurred in row 1.
#> Caused by error in `` names(message) <- `*vtmp*` ``:
#> ! 'names' attribute [1] must be the same length as the vector [0]
有趣的是,如果我使用连续分布而不是离散分布,代码就可以正常工作。
library(dplyr)
letters <- tibble(letter = c(rep("A", 5), rep("B", 5), rep("C", 5) ))
letters %>%
rowwise() %>%
mutate(Proj = case_when(
letter == "A" ~ rweibull(1, shape = 2.3487, scale = 8.174),
letter == "B" ~ rexp(1, rate = .0442),
letter == "C" ~ rnorm(1, mean = 0, sd = 1)
))
#> # A tibble: 15 × 2
#> # Rowwise:
#> letter Proj
#> <chr> <dbl>
#> 1 A 9.82
#> 2 A 7.72
#> 3 A 12.9
#> 4 A 7.81
#> 5 A 6.44
#> 6 B 10.4
#> 7 B 3.14
#> 8 B 1.48
#> 9 B 28.7
#> 10 B 11.0
#> 11 C -0.378
#> 12 C -0.340
#> 13 C 1.81
#> 14 C 1.03
#> 15 C -0.679
由 reprex package 创建于 2022-07-29 (v2.0.1)
这是怎么回事?
最佳答案
rpois
返回一个整数。 rnbinom
返回一个 double 值。 case_when
的文档说:
The LHS must evaluate to a logical vector. The RHS does not
need to be logical, but all RHSs must evaluate to the same
type of vector.
这就是导致问题的原因。将 rnbinom 的输出显式转换为整数或将 rpois 的输出显式转换为数字。
关于r - 将 rpois 和 rnbinom 与 dplyr 命令一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73169693/
我尝试使用以下示例代码重置 rnbinom 函数中的默认参数: params rnbinom function (n, size, prob, mu) { if (!missing(mu))
R 有一个 negative binomial function可以使用 mu 而不是概率(例如, float >= 0 和 <=1)进行参数化。我正在尝试复制此分布: rnbinom(1000,si
我正在尝试在 tibble 中生成随机数,其中不同类别的项目分布不同。我运气不好。这是代码及其产生的错误: library(dplyr) letters % rowwise() %>% mut
我是一名优秀的程序员,十分优秀!