如何解决使用基本样本生成随机数时排除0
我有一个如下所示的数据框
id shift_back shift_forward
<chr> <dbl> <dbl>
1 11 -140 0
2 12 -63 149
3 13 -37 327
4 14 0 193
5 16 -30 30
6 17 -30 30
7 18 -30 30
8 19 -30 30
我想用这些列shift_back
和shift_forward
作为范围间隔来生成一个随机数。
但是,我不希望随机数为0
。
下面的代码可以正常工作,但也可以包含0
mutate(shift = base::sample(seq(shift_back,shift_forward,by = 1),1))
但是,这会产生如下所示的输出,也可以将0
作为移位值
如何生成一个在该范围内但不包括0(从间隔中)的随机数。基本上,我不希望shift值为0(零)。
解决方法
您可以在采样前排除零。
library(dplyr)
df %>%
rowwise() %>%
mutate(shift = seq(shift_back,shift_forward) %>% .[. != 0] %>% sample(1))
,
library(tidyverse)
df <- tibble(
id = 11:14,shift_back = c(-140,-63,-37,0),shift_forward = c(0,149,327,193)
)
df %>%
rowwise() %>%
mutate(shift = list(seq(shift_back,shift_forward,by = 1)),shift = list(shift[shift != 0]),shift = sample(shift,1))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。