gpt4 book ai didi

r - 如何设置从 r 中的字符串中随机选取字符的概率

转载 作者:行者123 更新时间:2023-12-02 01:33:57 24 4
gpt4 key购买 nike

我有一个重复 4 个字符“atgc”的字符串

a <- "attgctagctagtcatgctagctacgtacgcatcgtacgatgcatatgctttttaattt"

如何随机选择一个大小为 5 的字符串,其中“gc”的概率应为 60%

最佳答案

好吧,这是一种方法:

set.seed(1)    # for reproducible example
all.str <- sapply(1:(nchar(a)-4),function(i) substr(a,i,i+4))
gc <- grepl("gc",all.str)
indx <- sample(c(TRUE,FALSE),10,p=c(0.6,0.4),replace=TRUE)
result <- c(sample(all.str[gc],sum(indx)),sample(all.str[!gc],sum(!indx)))
result <-result[sample(seq_along(result),length(result))]
result
# [1] "cgatg" "ctagc" "cgtac" "tagct" "gtacg" "ttaat" "catat" "cgcat" "acgca" "atgct"

所以有两类 5 个碱基段:有“gc”的和没有的。 all.str 是所有 5 个基段的向量。 gc 是一个与 all.str 长度相同的向量,指示特定元素是否具有“gc”。 indx 是一个长度为 10(可以是任何长度)的随机向量,它具有 T 或 F,其中 T 出现的概率为 0.6(请注意,这确实意味着 0.6,只是出现 T 的概率为 0.6) .

因此我们从 all.str[gc] 中获取一个 5 碱基片段的随机样本和从 all.str[!gc] 中获取第二个随机样本,结合这些,并随机化结果的顺序。

更一般地说,这是分层抽样或比例抽样的示例。 R 中有用于此目的的包,我相信有人会向您展示如何使用其中一个包来完成此操作。

最后,我觉得您的真实字符串 a 比示例长很多,因此这可能无法很好地扩展。

关于r - 如何设置从 r 中的字符串中随机选取字符的概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32289559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com