R语言:如何在随机分布数据集中随机选取个体设置为感染状态?
解决随机标记感染个体的问题
首先得说清楚你之前的for循环为啥出错:你写的循环逻辑走偏啦,infectionstatus一开始全是0,用它当索引的话会指向位置0,但R里的向量/数据框索引是从1开始的,这就触发了那个"attempt to select less than one element"的错误,而且这个循环本身也不是用来随机选个体的逻辑。
下面给你两种简单直接的正确做法,都不用写for循环:
- 方法一:随机选行索引赋值
先随机生成一个1到60之间的整数(对应数据框的行号),然后把该行的infectionstatus设为1:
# 随机抽取一个行号 random_idx <- sample(1:nrow(df2), 1) # 标记为感染状态 df2$infectionstatus[random_idx] <- 1
- 方法二:直接操作状态向量
也可以直接对infectionstatus向量随机选一个位置修改:
# 随机选一个位置设为1 df2$infectionstatus[sample(length(df2$infectionstatus), 1)] <- 1
如果之后需要标记多个感染个体,只需要把sample的第二个参数改成你想要的数量就行,比如标记3个的话就是sample(1:nrow(df2), 3)。
内容的提问来源于stack exchange,提问作者OpenSauce
相关产品推荐
相关产品推荐

